addSubViewした画面においたUIButtonをクリック時にEXE_BAD_ACCESS

このエントリーをはてなブックマークに追加
はてなブックマーク - addSubViewした画面においたUIButtonをクリック時にEXE_BAD_ACCESS
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[`grow` not found]

新しいiOSだと、

今までのコードの書き方ではEXE_BAD_ACCESSでおちてしまう事があります。

 

2番目の画面をViewControllerサブクラスで作成して

単純な画面移動を試していた時に発見つけました。

2番目の画面のボタンをタッチすると落ちてしまうんです。

 

コードは以下の通りです。

FirstViewController.hファイル

#import <UIKit/UIKit.h>

#import “SecondView.h”

 

@interface FirstViewController : UIViewController{

 

//ここに共有変数として用意すると落ちなくなる

SecondView *second;

 

}

- (IBAction)myActionNextView:(id)sender;

 

@end

 

FirstViewController.mファイル

- (IBAction)myActionNextView:(id)sender {

 

//以前の書き方:この書き方だと、2番目の画面のボタンをおした際に落ちてしまう

//SecondView *second = [[SecondView alloc] initWithNibName:@”SecondView” bundle:nil];

 

second = [[SecondView alloc] initWithNibName:@”SecondView” bundle:nil];

 

[self.view addSubview:second.view];

}

 

SecondView.hファイル

#import <UIKit/UIKit.h>

 

@interface SecondView : UIViewController

 

 

- (IBAction)myActionBackView:(id)sender;

 

@end

 

SecondView.mファイル

- (IBAction)myActionBackView:(id)sender {

 

[self.view removeFromSuperview];

}

今後改善されるかもしれませんが、今の所ARCの関係で以前の書き方ではダメのようです。

単純な画面遷移をして詰まっている方は、2番目の画面に当たるUIViewControllerサブクラスを

hファイルに宣言してからalloc + initWithNibNameしてみて下さい。

 

 

 

関連している記事:


Copyright(c) 2010 EUI All Rights Reserved.