我有一个自定义的视图控制器,我把它推到我的导航堆栈上,如下所示:
myViewController *myVC = [[myViewController alloc] init];
[myVC generate:myData];
[self.navigationController pushViewController:myVC animated:YES];代码运行得很好,但是在检查内存泄漏时,我得到了一个警告,myVC永远不会被释放。
添加release语句
[myVC release];第4行编译正常,但在执行时崩溃。我需要如何处理这个问题?
发布于 2010-05-18 21:49:26
我的猜测是它与这段代码没有任何关系。问题是以前,因为你没有在这里发布它,所以它从来没有被释放过。现在,当您从导航堆栈中弹出视图控制器时,它将被释放,它将调用myViewController的dealloc方法,并且其中的一些string对象将被过度释放。
可能在某个时刻,在myViewController中设置了一些字符串变量而没有保留它,或者释放了它而没有设置为null,然后再释放它。
发布于 2010-05-18 21:49:34
是的,你应该释放你的视图控制器。
您看到的错误消息是由于视图控制器内部的内存管理问题造成的--您似乎过度释放了一个NSString对象。
发布于 2011-10-24 06:23:15
你应该使用
myViewController *myVC = [[myViewController alloc] initWithNibName:nil bundle:nil]在创建新的视图控制器时,似乎使用init而不是没有任何参数的initWithNibName会把pushViewController搞得一团糟。这是一个我花了几个小时才解决的问题,因为它似乎与手头的问题无关!
https://stackoverflow.com/questions/2857479
复制相似问题