什么时候我的外部变量使用ARC发布?

时间:2013-01-29 13:30:32

标签: ios singleton automatic-ref-counting extern

我有一个设置,我的所有单身人士都住在 extern NSDictionary中(我需要它全局可见,因为我从一个具有一些共同特征的基本单例对象中创建了许多子类)。

一切都很好,但是在运行iOS 5.0的iPad 1上,当用户将应用程序置于后台(不终止,只需按下主页按钮)时,这个词典就会被释放(所以我的所有单例服务,子类等等都会被释放)。 )。更有趣的是,当我切换回应用程序时,它们会被重新创建,但“有时”它们不是,并且我的应用程序行为变得不可预测。

我在声明之前放了__strong,但结果相同。当我的单身人士在整个时间被销毁/创建时,这是非常有害的,因为他们正在存储运行时用户/应用程序状态。

重要的是我使用最快,最小的优化级别进行调试,以模拟生产环境。

有没有办法阻止这种行为?以某种方式使其“标记为真正保留”?

1 个答案:

答案 0 :(得分:0)

只要应用程序“活着”,它们就不应该被释放。

如果您的应用程序完全终止(重新启动模拟器/从iPad关闭它),一切都会被释放,当您再次打开应用程序时,您将无法获得任何内容。

另外,单身人士的观点是你调用一个getter并检查它是否存在,如果没有则创建它,所以如果你在某个时候没有它就不应该有问题

如果您在重新启动应用程序时需要持久性数据,我建议您查看序列化和/或某种持久性