Release and pushViewController
我有一个自定义视图控制器,可按如下所示将其推入导航堆栈:
1 2 3 | myViewController *myVC = [[myViewController alloc] init]; [myVC generate:myData]; [self.navigationController pushViewController:myVC animated:YES]; |
代码运行正常,但是在检查内存泄漏时,我收到一条警告,提示myVC永远不会释放。
添加发布声明
1 | [myVC release]; |
第4行中的
可以正常编译,但是在执行时崩溃。我该如何处理?
我的猜测是,这与这段代码无关。问题在于,以前,由于您不在此处释放它,因此从未将其释放。现在,当您从导航堆栈中弹出视图控制器时,它已被释放,它正在调用
大概在某个时候在
是的,您应该释放视图控制器。
您看到的错误消息是由于视图控制器内部的内存管理问题导致的-似乎您过度释放了
您应该使用
1 | myViewController *myVC = [[myViewController alloc] initWithNibName:nil bundle:nil] |
在创建新的视图控制器时,似乎使用带有nil参数的init代替initWithNibName会使pushViewController混乱。这个问题花了我几个小时才能解决,因为它似乎与手头的问题无关!