deltaview
はDeltaViewControllerタイプであるため、ビューではなくコントローラーです。self.view([self.view addSubview:deltaview.view];)のサブビューとして追加した後、を解放することができますdeltaview
。次に、メソッド(DeltaViewControllerに実装されている)をに送信するとdeltaview
、もちろんこのEXC_BAD_ACCESSエラーが発生します。
簡単な解決策:ローカル変数ではなくiVarとして宣言するだけですdeltaview
(実際には、代わりに使用する必要があります)。deltaViewController
編集:
さて、ここに簡単なコードスニペットがあります:
YourViewController.h:
@interface YourViewController : UIViewController
@property DeltaViewController *deltaViewController;
@end
YourViewController.m:
@implementation YourViewController
@synthesize deltaViewController;
...
- (void)aMethod;
@end
- (void)dealloc {
self.deltaViewController = nil; // set it to nil & release it after yourViewController dealloced.
[super dealloc];
}
- (void)aMethod {
DeltaViewController *deltaViewController = [[DeltaViewController alloc] initWithNibName:@"DeltaViewController" bundle:nil];
// ...(setup deltaViewController)
self.deltaViewController = deltaViewController; // it'll retain deltaViewController
[deltaViewController release];
...
}