【发布时间】:2010-12-18 14:42:30
【问题描述】:
我正在开发一个 iPhone 应用程序,我正在尝试将一个视图推送到导航控制器中,我之前已经做过很多次了,但是,我在使用这个特定的应用程序时遇到了一些问题。我有一个表格视图,当用户选择一行时,新视图被推送到控制器中:
DataWrapper *row=[[self.rows objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]];
DataViewController *nextController=[[DataViewController alloc] initWithNibName:@"Data" bundle:[NSBundle mainBundle]];
[nextController setInfo:row];
[nextController setRow:[indexPath row]];
[nextController setParent:self];
[self.navigationController pushViewController:nextController animated:YES];
[nextController release];
一切正常,直到用户点击后退按钮,我得到一个异常,并使用 NSZombieEnabled 并得到这个:
-[DataViewController respondsToSelector:]: message sent to deallocated instance 0x4637a00
所以我尝试删除[nextController release],实际上它起作用了,但是为什么????我分配了nextController,所以我应该释放它,对吧??如果有这样的事情,我觉得发布这个应用程序是不对的,我觉得它会失败。请让我知道你的想法。
【问题讨论】:
-
父控制器视图中发生的任何特殊情况(Will/Did)会出现吗?也许涉及另一个未保留或过度释放的实例变量?
标签: objective-c iphone exception memory-management