我有两个UIViewControllers
“viewcontroller1”和“viewcontroller2”
在 viewcontroller1
中-(IBAction)AddClicked:(id)sender
{
viewcontroller2 *view=[[viewcontroller2 alloc]initWithNibName:@"viewcontroller2” bundle:nil];
view.str=@"Main";
[self presentViewController: view animated:NO completion:nil];
[view release];
}
在 viewcontroller2
中 -(IBAction)BackClicked:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
}
添加点击后的视图2成功加载。点击后面的视图2被取消成功。 但是,如果我尝试再次点击添加获得
的异常viewcontroller2 已取消分配,而键值观察者仍在其中注册。目前的观察信息:( 上下文:0xf7dea8,属性:0x17f292d0> 上下文:0xf7dea8,属性:0x19070e90> )'
* 第一次抛出调用堆栈:
(0x2b6b4f87 0x39051c77 0x2b6b4ecd 0x2c35c18b 0x70c517 0x2c3b85e9 0x2b67b737 0x2b67b2b9 0x2b679523 0x2b5c6db1 0x2b5c6bc3 0x328fb051 0x2eb92a31 0xc1a1d 0xb3698) libc ++ abi.dylib:以NSException类型的未捕获异常终止
如果我删除[view release];
内存泄漏。
我怎样才能既没有异常也没有泄漏?
答案 0 :(得分:2)
尝试自动释放
viewcontroller2 *view = [[[viewcontroller2 alloc]initWithNibName:@"viewcontroller2” bundle:nil] autorelease];
答案 1 :(得分:2)
您是否正在注册通知或向viewcontroller2添加观察者?
在取消分配视图控制器之前,必须先删除它们。