シングルビューアプリが作成された場合、FooView
そのサブクラスを使用UIView
して、
NSLog(@"hello");
でdrawRect
、それからそれは印刷されます。
CALayer
そして、呼び出されたのサブクラスを作成し、CoolLayer
このメソッドをFooView.m
:に追加するとします。
+(Class) layerClass {
return [CoolLayer class];
}
FooView.m
そして、の終わりにdrawRect
、
NSLog(@"layer's class is %@", self.layer.class);
その後CoolLayer
、印刷されます。つまり、ビューの下にあるレイヤーはCoolLayer
です。
しかし、以下が追加された場合CoolLayer.m
:
-(void) display {
}
これは、レイヤーを再描画するために自動的に呼び出されるメソッドであり(と同様drawRect
)、NSLog
印刷されません。アプリが無限ループに入った可能性があります。(touchesBegan
NSLogメッセージを出力する私のものでさえ印刷されていません)。ブレークポイントがに設定されている場合、ブレークポイントはdisplay
そこで一度停止しますが、プログラムを続行すると、ブレークポイントは二度と到達しませんdisplay
。これの何が問題になっていて、どうすれば修正できますか?