当app停留在内存中时,属性被释放

时间:2015-01-13 22:05:28

标签: ios objective-c keychainitemwrapper

我在用户登录时将用户名/密码信息保存到钥匙串。稍后,如果我需要用户名,我会从钥匙串获取用户名。今天早上我注意到导航我的应用程序时,我的钥匙串属性显然已从内存中释放,即使应用程序从未被释放(在重新打开应用程序时从未被踢出初始视图控制器)。

我正在使用this ARCified KeychainItemWrapper,我认为问题可能是我声明属性属性的方式:

@property (nonatomic, retain) KeychainItemWrapper *keychainItem;

我现在知道我应该使用strong而不是retain,但这是在我的应用之前该属性被解除分配的原因吗?

1 个答案:

答案 0 :(得分:1)

一个。你正在使用的课程并不重要。重要的是您的财产已取消分配。当没有任何对象具有从该属性表示的对象的所有权时,就会发生这种情况。这意味着您声明该属性已被解除分配的对象即视图控制器被解除或弹出);

B中。 retainstrong完全相同,但不再使用 ARC 调用retainrelease是一种很好的做法{{1} }。