NSObjectの派生クラスは、UIView()やUIViewController()のようにすると初期化することができますよね?
この引数のないinit()はNSObjectで定義された指定イニシャライザのようですが、このinit()がどういう仕組みになってるのかいまいち理解できません。
lang
1class SubUIView: UIView { 2 override init(frame: CGRect) { 3 super.init(frame: frame) 4 print(frame) 5 } 6 7 required init?(coder aDecoder: NSCoder) { 8 fatalError("init(coder:) has not been implemented") 9 } 10} 11 12SubUIView()
Playgroundで上のように記述すると、initWithFrame:のprint文が出力され、init()からinitWithFrame:が呼び出されてるように見えます。
つまりこれは、UIViewはNSObjectのinit()を簡易イニシャライザとしてオーバーライドして、間接的に自身の指定イニシャライザを呼び出してるということでしょうか?
他のNSObject派生クラスでも「クラス名()」で初期化できるものは、「init()を簡易イニシャライザとしてオーバーライドして、間接的に自身の指定イニシャライザを呼び出してる。」という解釈であってますでしょうか?
書いてるうちにややこしくなってしまって、申し訳ないのですが回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/17 06:00
2016/04/17 06:13
2016/04/17 10:17
2016/04/17 10:32
2016/04/17 14:45
2016/04/17 15:29
2016/04/18 11:45
2016/04/18 12:18
2016/04/19 10:43