EXEC_BAD_ACCESS当关闭ModalViewController
我正在使用一个非常标准的配方在我的iPhone应用程序中呈现ModalViewControllers,但是我遇到了配方被打破并且很困惑的情况。这是我(几乎总是)如何设置演示:EXEC_BAD_ACCESS当关闭ModalViewController
MatcherViewController *controller = [[MatcherViewController alloc] initWithNibName:@"MatcherView" bundle:nil];
[controller setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[controller setDelegate:self];
[self presentModalViewController:controller animated:YES];
[controller release];
这永远的伟大工程,直到我说一两件事的组合,我发信息给新的控制器对象之前,我提出它,像所以:
MatcherViewController *controller = [[MatcherViewController alloc] initWithNibName:@"MatcherView" bundle:nil];
[controller setPrimary:primaryIndex andSecondary:secondaryIndex];
[controller setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[controller setDelegate:self];
[self presentModalViewController:controller animated:YES];
[controller release];
添加此方法调用似乎工作,直到我解雇视图控制器......在这一点与EXEC_BAD_ACCESS信号的应用程序崩溃。如果我删除[controller release]
,我可以使用额外的线路工作,但是恐怕会导致泄漏。为什么在演示之前向对象发送消息的任何想法都会导致这种情况?有没有更好的方法将简单的参数传递给ModalViewController?
感谢您在理顺新手时,P
我要去猜测,primaryIndex
和secondaryIndex
是
不当保留的对象
使得它们依赖于留住他们生存的模式视图。当你释放模态视图时,它们会死亡,但会在代码中的其他地方调用,导致崩溃。
如果它们是该类的保留属性,则始终使用“self.propertyName”构造访问它们以确保它们的保留计数得到正确管理。
根据我的经验,过度释放形式的过早优化是今天Objective-C头痛的主要原因。老派的Objective-C编码人员对于泄漏事件有些偏执,因为他们几乎不可能在当天手工追踪。这就是为什么很多资源仍然非常重视防止泄漏。但是,使用现代分析工具,泄漏通常无足轻重。
在最初的开发过程中,如果有疑问,请不要发布。
好吧,抓我的想法。我在父母的第二个评论之前写了它,显然他们不是对象。然而,基本想法是健全的。当它在最终发布时死亡时,视图正在采取一些措施。 – TechZen 2010-02-21 16:20:13
感谢您指点我在正确的方向乡亲。事实证明,确切的罪魁祸首是一些在施工时没有保留的物体释放(NARC违规,因为我相信他们被称为)。 – Devunwired 2010-02-21 18:41:03
在你的控制器dealloc方法,确保你没有结束释放任何东西。
谢谢你指出我在正确的方向乡亲。事实证明,确切的罪魁祸首是一些在施工时没有保留的物体释放(NARC违规,因为我相信他们被称为)。 – Devunwired 2010-02-21 18:40:24
你在做什么-setPrimary:andSecondary:? – 2010-02-21 14:50:47
将参数(NSInteger)传递给成员变量。 – Devunwired 2010-02-21 15:58:28