さぁ実践だと意気込んで、早速ハマりました![]()
iPhoneの描画能力がどれくらい速いのか知りたくて、
はじめにUIViewのサブクラスをイニシャライザ無しで作って動かしていましたが、
「ここはイニシャライザで先に計算しておけば、より軽くなるんじゃないかな」
と普通に考えて、やってみたら、コンパイルできません。
Xcodeが提示してくれる修正案も、なぜそうなのかがわからない![]()
これは先の2冊の入門書では触れられていないので、
英文ドキュメントを理解できていないせいです。
それで一日中(サボりながら)ググっていました![]()
参考にしたサイトで最も(唯一?)腑に落ちたのはこちらのページでした。
[Swift] クラスのイニシャライザ3: Designated Initializer と Convenience Initializer
しかし次にわからないのが「required」です。
ググってみてよく出てきたのが、
required init() {
super.init()
}
という、手作業で継承したも同然のもの。
実装必須なんだったら自動的に継承してくれればいいじゃないかと思うのですが…。
もうひとつ、
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
必須だからrequiredなのに、エラー処理で止めてしまうのは何のためなのでしょう。
NSCodingプロトコルが絡んでいるという事までしかわかりませんでした。
作っていけば、なぜこうなっているのか合点がいくのかもしれません。
いまは不思議です。