我是 iOS 编程新手,我阅读了 View Controller 编程指南,但有些事情我还不清楚
我希望我已经清楚地定义了我的困惑。请忽略任何愚蠢的错误。
谢谢你。
最佳答案
回答您的疑问 -
根据 UIViewController 指南 -
它负责创建这些 View 并在适当的时候放弃它们的所有权,包括在内存不足的情况下和 View Controller 本身被释放时。
所以我们需要取得所有权来释放一个 View Controller 。
此外,UIViewController 类通过其 didReceiveMemoryWarning 方法提供了一些低内存条件的自动处理,该方法释放了不需要的内存。
TableView -> 单击单元格推送下一个 View -> 现在弹出此 View 以返回表格 View (此处内存已释放)-> 再次在表格 View 中 -> 单击单元格时推送一个新的 View Controller 。
以这种方式处理内存。如果在层次结构中我们正在推送一些 View ,例如 -
VC1 -> VC2 > VC3 -> VC4
现在在这种情况下,导航 Controller 保留所有这些 View Controller 的实例,因为导航 Controller 为我们提供了向后移动的灵 active 。一旦我们返回, View Controller 就会从堆栈中删除,分配给它的内存也会被释放。
使用的语法 -
推送 View Controller -
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];//at the time of push we add this release statement.
现在,当我们执行 pop 时,会调用它的 dealloc 方法并将其从堆栈中删除。
[self.navigationController popViewControllerAnimated:YES];//That view is release from navigation stack
希望这可以消除您的疑问。
查看此开发者页面了解更多详情 - http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html
关于ios - 对 uiviewcontroller 内存管理和在它们之间传递数据感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10563602/