我在用户登录时将用户名/密码信息保存到钥匙串。稍后,如果我需要用户名,我会从钥匙串获取用户名。今天早上我注意到导航我的应用程序时,我的钥匙串属性显然已从内存中释放,即使应用程序从未被释放(在重新打开应用程序时从未被踢出初始视图控制器)。
我正在使用this ARCified KeychainItemWrapper,我认为问题可能是我声明属性属性的方式:
@property (nonatomic, retain) KeychainItemWrapper *keychainItem;
我现在知道我应该使用strong
而不是retain
,但这是在我的应用之前该属性被解除分配的原因吗?
答案 0 :(得分:1)
一个。你正在使用的课程并不重要。重要的是您的财产已取消分配。当没有任何对象具有从该属性表示的对象的所有权时,就会发生这种情况。这意味着您声明该属性已被解除分配的对象(即视图控制器被解除或弹出);
B中。 retain
和strong
完全相同,但不再使用 ARC 调用retain
和release
是一种很好的做法{{1} }。