【发布时间】:2014-09-29 12:14:42
【问题描述】:
我有两个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];
}
添加点击后的 view2 加载成功。点击返回后 view2 成功关闭。 但是,如果我尝试再次单击添加,则会出现异常
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]; 会导致内存泄漏。
如何做到既不异常也不泄漏?
【问题讨论】:
-
你试过用谷歌搜索错误信息吗?我敢肯定它已经被报道过无数次了。
-
sry 什么是 MRC,我知道我们不使用的 ARC
-
该错误表明“键值观察者”存在问题,但您的问题显示与 KVO 无关。
Context是什么,它与视图控制器有什么关系? -
在展示第二个视图控制器时为什么你没有动画?将动画更改为
animated:YES -
这段代码看起来不错,问题出在别处添加完整代码