2011-07-09 13 views
1

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で自分自身から呼び出すことができますか?

アイデア?

答えて

2

あなたが破壊された後に-retaintheColorに送信しようとしています。どこから来たのか確認してください。

+0

ありがとうございました!私はinitWitheFrameに2つのNSColor変数を宣言し、それらを保持するのを忘れてしまった。 – T1000

関連する問題