模态序列会创建新对象吗?
Posted
技术标签:
【中文标题】模态序列会创建新对象吗?【英文标题】:Do modal segues create new objects? 【发布时间】:2012-01-25 14:52:58 【问题描述】:我通过使用模态 segue 从一个视图控制器转换到另一个 UINavigationController
。对我来说,这个视图控制器(及其子视图控制器)保留在内存中以便保持特定的引用很重要。尽管显然这并没有发生。在调试viewWillAppear
函数时,rootViewController
(viewControllers[0]) 引用指向调用之间的不同内存地址(并且包含 nil 值,我的实际问题)。
现在有两种可能导致此问题:
但更令人困惑的是,它们都没有发生; UINavigationController 和 rootViewController 都没有被破坏(未调用 viewDidUnload!)。
编辑:进一步调查发现 UINavigationController 确实为每个模态转场重新创建。我希望通过维护一个属性我可以解决问题。
【问题讨论】:
【参考方案1】:我最终创建了自己的 IBAction 函数,手动呈现控制器。这工作得很好,并且在不到 5 分钟的时间内完成了编码。只需在情节提要的 ViewDidLoad 上初始化一次控制器。
【讨论】:
【参考方案2】:在主视图控制器中创建一个强引用,并将您的新视图控制器指向该属性。这将根据需要保留视图,尽管不建议在 n 个视图中这样做,因为它违背了导航控制器处理其自己的视图创建和删除的目的。
【讨论】:
以上是关于模态序列会创建新对象吗?的主要内容,如果未能解决你的问题,请参考以下文章