新手问题,一个 array 在 app 中的生命周期

2014-04-03 18:50:05 +08:00
 tedd
如果我在AppDelegate中的appDidFinishedLauching里面声明了一个array,app第一次被运行时候被分配,是否只要在这个app不彻底从系统中退出(双击home键将这个app卡片划出去),那这个array就一直在,且保存着其中的数据呢?
2154 次点击
所在节点    iDev
3 条回复
dorentus
2014-04-03 19:08:23 +08:00
假如这个 array 被赋为了某个持久对象(比如 AppDelegate 的实例)的 strong 属性,那么是。
否则的话,出了作用域这个 array 就没了……
dorentus
2014-04-03 19:11:00 +08:00
@dorentus 补充一下,上面这个是开启 ARC 的情况。array 没了是因为编译器自动在出作用域之前给它发了 release 消息。

没开启 ARC 的话(现在已经很少有人这么做了吧),除非手动发 release 消息直至 retain count 为 0,否则 alloc 过的对象一直存在。
Him
2014-04-04 10:14:06 +08:00
app在启动的时候会创建一个autoreleasepool(见main),如果array并不是alloc、new出来的,可以自动释放

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/107154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX