【发布时间】:2011-01-31 22:28:34
【问题描述】:
在这里需要一些最佳实践建议...
基于导航的应用程序。根视图是一个 UITableView,用户可以在其中深入了解 UIViewController 的详细信息(称为 VC1)。用户想要启动某些任务,但它可能需要其他信息才能继续。如果是这样,则 VC1 使用“翻转”转换在属性中持有对 VC2 的强引用来分配和呈现模态 VC2。
一切都相当标准。这就是我遇到麻烦的地方。用户在 VC2 中填写所需信息后,应用程序可以继续使用 MFMailComposeViewController 或返回 VC1。如果他们继续 MailCompose,那么当它关闭时,它应该返回到 VC1。
VC2 对 VC1 的引用很弱,当 VC2 试图关闭自己并呈现 MFMailComposeViewController 时,问题就出现了:
[self dismissModalViewControllerAnimated:YES];
[VC1 performSelector:@selector(showMailModalView) withObject:nil afterDelay:0.2];
我在 VC1 上得到一个 EXC_BAD_ACCESS,因为很明显,我对 VC1 的弱引用已经被解除分配,即使 VC1 对 VC2 有强引用!?!
所以我的问题是......应该如何处理?委托模式会更好吗?那怎么触发?
注意:VC1 相当大,VC2 并不经常需要,所以我尽量将 VC2 与 VC1 分开(包括它自己的 NIB)。
【问题讨论】:
标签: iphone cocoa-touch uiviewcontroller uinavigationcontroller