NSView に CALayer を追加しようとしています。私が持っている動作していないコードは
-(void) InsertCALayer
{
newLayer = [CALayer layer];
newLayer.frame = NSMakeRect(10, 10, 100, 100);
newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
[rootLayer addSublayer:newLayer];
}
ただし、このコードでは何も表示されません。奇妙なことに、mouseDown イベント ハンドラーも実装しており、コードはそこで動作します。
-(void) mouseDown:(NSEvent *)theEvent
{
newLayer = [CALayer layer];
newLayer.frame = NSMakeRect(10, 10, 100, 100);
newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
[rootLayer addSublayer:newLayer];
}
両方のメソッドが確実に呼び出されることは確認できますが、なぜ一方が機能し、もう一方が機能しないのかについて非常に混乱しています。何かご意見は?