2011-07-10 4 views
0

これは簡単なことであれば私の質問には意味があるので、私はそれを罠に掛けてしまいました。私は窓には2つのビュー追加していEXC_BAD_ACCESSを引き起こすボタン

self.appView = [[AppViewController alloc] initWithNibName:nil bundle:nil] ; 
self.buttonBar = [[ButtonBar alloc] initWithNibName:nil bundle:nil]; 

[window insertSubview:[self.appView view] belowSubview:[self.launchScreen view]]; 
[window insertSubview:[self.buttonBar view] belowSubview:[self.launchScreen view]]; 

私はself.launchScreenを削除する前に。

要素をappView(uitableviewcontroller)に追加すると、期待どおりに機能しますが、buttonBar(XIBまたはコードのいずれか)にボタンを追加すると、EXC_BAD_ACCESSがクリックされます。

が、ここでは(1つのボタンを追加している)のButtonBarから初期化コードです:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 

     self.settingsButton = [[UIButton alloc] initWithFrame:CGRectMake(0,10,40,28)]; 
     [self.settingsButton addTarget:self action:@selector(settings:) forControlEvents:UIControlEventTouchUpInside];  

     UIImage *btnImage = [UIImage imageNamed:@"play.png"]; 
     [self.settingsButton setImage:btnImage forState:UIControlStateNormal]; 
     [btnImage release]; 

     [self.view addSubview:self.settingsButton]; 

    } 
    return self; 
} 

私の質問は与えるもの二つの部分、1)です!私はこの方法が長すぎる、2)どのように私はこのものをデバッグできますか? XCODEのデバッグツールがこの問題を追跡するのに役立つと確信したら、n00bの質問をするためにSOに来るのは嫌いです...

+0

「設定:」メソッドは同じオブジェクトに存在しますか? – Joe

+0

はい、それを読み取ります: - (void)settings {NSLog(@ "Settings"); } –

+1

代わりに「@セレクタ(設定)」を試してください。 – Joe

答えて

1

代わりに@selector(settings)を使用してください。

0

私はこれが問題であるかどうかはわかりませんが、私はsettingsButtonを想定してい

self.settingsButton = [[[UIButton alloc] initWithFrame:CGRectMake(0,10,40,28)] retain]; 

は@property(保持)を使用してヘッダファイルにすでにあるこの行で終わり」を保持し、あなたの.mファイルでそれを合成しています。

代わりにdeallocメソッドで解放してください。

+0

申し訳ありませんが、その保持はそこにあることを意味しません。それは私が傷ついて、私が考えることができるすべてを試していたことでした。これは.mファイルで合成され、ヘッダに保持され、deallocで解放されます。 –

関連する問題