属性 在应用保留在内存中时释放
Property deallocated while app stayed in memory
我在用户登录时将 username/password 信息保存到钥匙串。稍后,如果我需要用户名,我会从钥匙串中获取用户名。我今天早上在浏览我的应用程序时注意到我的钥匙串 属性 显然已从内存中释放,即使该应用程序从未被释放(在重新打开应用程序时从未被踢出到初始视图控制器)。
我正在使用 this ARCified KeychainItemWrapper,我认为问题可能出在我声明 属性 属性的方式上:
@property (nonatomic, retain) KeychainItemWrapper *keychainItem;
我现在知道我应该使用 strong
而不是 retain
,但这就是 属性 在我的应用程序之前被释放的原因吗?
一个。您使用的 class 并不重要。重要的是 你的 属性 被释放 。当 不再有对象拥有 属性 表示的对象的所有权时,就会发生这种情况。这意味着 您声明 属性 的对象已被释放(即视图控制器被关闭或弹出);
乙。 retain
和 strong
完全相同,但是 retain
和 release
不再使用 ARC 调用是一个很好的做法,使用 strong
.
我在用户登录时将 username/password 信息保存到钥匙串。稍后,如果我需要用户名,我会从钥匙串中获取用户名。我今天早上在浏览我的应用程序时注意到我的钥匙串 属性 显然已从内存中释放,即使该应用程序从未被释放(在重新打开应用程序时从未被踢出到初始视图控制器)。
我正在使用 this ARCified KeychainItemWrapper,我认为问题可能出在我声明 属性 属性的方式上:
@property (nonatomic, retain) KeychainItemWrapper *keychainItem;
我现在知道我应该使用 strong
而不是 retain
,但这就是 属性 在我的应用程序之前被释放的原因吗?
一个。您使用的 class 并不重要。重要的是 你的 属性 被释放 。当 不再有对象拥有 属性 表示的对象的所有权时,就会发生这种情况。这意味着 您声明 属性 的对象已被释放(即视图控制器被关闭或弹出);
乙。 retain
和 strong
完全相同,但是 retain
和 release
不再使用 ARC 调用是一个很好的做法,使用 strong
.