属性 在应用保留在内存中时释放

Property deallocated while app stayed in memory

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

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

@property (nonatomic, retain) KeychainItemWrapper *keychainItem;

我现在知道我应该使用 strong 而不是 retain,但这就是 属性 在我的应用程序之前被释放的原因吗?

一个。您使用的 class 并不重要。重要的是 你的 属性 被释放 。当 不再有对象拥有 属性 表示的对象的所有权时,就会发生这种情况。这意味着 您声明 属性 的对象已被释放即视图控制器被关闭或弹出);

乙。 retainstrong 完全相同,但是 retainrelease 不再使用 ARC 调用是一个很好的做法,使用 strong.