photo credit: KamrenB Photography via photopin cc
こんにちは、ボーノです。
かなりはまったので紹介。
EXC_BAD_ACCESSエラー
エラーが発生している場所が分かり辛い、やっかいなエラー。
どうやら、メモリに関するエラーの時に出るみたい。
UIButtonの時に出たら
ボタンを押した時に出現する事が多い。
良くあるのは、addTarget:self action:@selector(hogeHoge)と書いておきながらメソッドが -(void)hogeHoge:(id)senderというように":"を忘れていた場合に出たりするようだ。
ただし、今回はそこは問題なく、一見して完璧なコードにも見える。
//ボタンを呼び出すコード
UIButton *cancelButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cancelButton.frame = CGRectMake(100, 300, 80, 50);
[cancelButton setTitle:@"キャンセル" forState:UIControlStateNormal];
[cancelButton addTarget:self action:@selector(hogeHoge) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:cancelButton];
//ボタンが押されたら実行されるメソッド
-(void)hogeHoge
{
NSLog(@"test OK");
}
完全にこれははまった。
結論を言うと、呼び出し元での一工夫が必要だったみたい。 .hファイル内に下記のように呼び出し先の宣言をしておく
#import <UIKit/UIKit.h>
#import "Hoge2ViewController.h" //呼び出し先のviewController
@interface HogeViewController : UIViewController {
//ここでviewControllerを宣言しておく
Hoge2ViewController *hoge2ViewController;
}
@end
これで直りました。
下記サイトに救われました。感謝!
addSubViewした画面においたUIButtonをクリック時にEXE_BAD_ACCESS | EUI – iPhoneやandroidスマートフォンアプリの開発を教えるスクール