bgColorという名前の保持されたプロパティを持つカスタムNSViewオブジェクトがあります。背景色を変更するとカスタムNSViewがクラッシュする
-(void)isOnline:(BOOL)connected{
if(connected){
self.bgColor = onlineBackgroundColor;
} else {
self.bgColor = offlineBackgroundColor;
}
}
私は[self isOnline:NO]
を使用してinitWithFrame方法でisOnlineメソッドを呼び出したときに、それが正常に動作します:私もisOnlineと呼ばれる別の機能を持っている
- (void)setBgColor:(NSColor *)theColor
{
[bgColor autorelease];
bgColor = [theColor retain];
[self setNeedsDisplay:YES];
}
:私はsetBgColorメソッドを定義することにより、setterメソッドをオーバーライドします。しかし、私はと制御対象からisOnlineメソッドを呼び出すしようとすると:「EX_BAD_ACCESS」:コンパイラは、プログラムが信号を受信文句bgColor = [theColor retain];
:
[theCustomedView isOnline:YES];
またはtheCustomedView.isOnline = YES;
それはラインでsetBgColor方法でクラッシュしていました。なぜ私は理解できません。それは間違っていたのですか?
もしそうなら、どうすれば制御オブジェクト[theCustomedView setBgColor:aColor];
から呼び出すことができ、initWithFrameで自分自身から呼び出すことができますか?
アイデア?
ありがとうございました!私はinitWitheFrameに2つのNSColor変数を宣言し、それらを保持するのを忘れてしまった。 – T1000