私のプログラムでは、UIViewController
のカスタムコントロールのように複数の子を宣言して使用する必要があります。UIViewController
しかし、子のUIViewコントローラの1つのボタンをクリックすると、EXC_BAD_ACCESS
エラーが発生します。以下の私のサンプルコード構造を見てください。メインUiViewControllerの子UiViewControllerを動的に宣言する
例1:
//--Child-------------------------------------------------------------------
@interface subUIViewController<UIViewController>
-(IBAction)myButtonClick:(id)Sender;
[email protected] subUiViewController
-(IBAction)myButtonClick:(id)Sender
{
NSLog(@"Button Click Event.....");
}
//---Main--------------------------------------------------------------------
@interface mainUIViewController<UIViewController>
@implementation mainUIViewController
-(void)viewDidLoad
{
[super viewDidLoad];
subUiViewController *subViewController=[[subUiViewController alloc] initWithNibNameAndArtist:@"subUiViewController" bundle:nil];
[self.view addSubView: subViewController.view];
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
しかし、私はMainViewController
に@property (retain,nonatomic) subUiViewController *subViewController
と宣言した場合、それはエラーなしで働いています。次のコードを参照してください。
例2:
//---Child------------------------------------------------------------------
@interface subUIViewController<UIViewController>
-(IBAction)myButtonClick:(id)Sender;
@implementation subUiViewController
-(IBAction)myButtonClick:(id)Sender
{
NSLog(@"Button Click Event.....");
}
//----Main-----------------------------------------------------------------
@interface mainUIViewController<UIViewController>
@property(retain,nonatomic) subUiViewController *subViewController;
@implementation mainUIViewController
@synthesize subViewController;
-(void)viewDidLoad
{
[super viewDidLoad];
subViewController=[[subUiViewController alloc] initWithNibNameAndArtist:@"subUiViewController" bundle:nil];
[self.view addSubView: subViewController.view];
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
例1が動作していないと実施例2が動作している理由を私は知りません。私は、例1を使用する必要があります。なぜなら、Core Data Returnに基づいて子uiビューコントローラをプログラムで作成する必要があるからです。何が間違っているのかを教えてください。どのようにコード内で子uiビューコントローラを動的に宣言できますか?例で
ありがとうございます。でも、それでも私は同じエラーが出ます。私のアプリケーションはARCを使用しています。 –
ARCを使用する場合は、この行を削除してください [subViewController release]; – user523234