0

ユーザーのログイン時にユーザー名/パスワード情報をキーチェーンに保存しています。後でユーザー名が必要な場合は、キーチェーンからユーザー名を取得します。今朝、アプリをナビゲートしているときに、アプリの割り当てが解除されていないにもかかわらず、キーチェーン プロパティが明らかにメモリから割り当て解除されていることに気付きました (アプリを再度開いたときに、最初のビュー コントローラーに追い出されることはありませんでした)。

この ARC 化された KeychainItemWrapperを使用していますが、プロパティ属性を宣言した方法に問題があると思います。

@property (nonatomic, retain) KeychainItemWrapper *keychainItem;

strongではなくを使用する必要があることがわかりretainましたが、アプリの前にプロパティの割り当てが解除されたのはそのためですか?

4

1 に答える 1

1

A. どのクラスを使用しているかは重要ではありません。重要なことは、あなたのプロパティが解放されていることです。これは、そのプロパティから表されるオブジェクトの所有権を持つオブジェクトがなくなった場合に発生します。これは、そのプロパティを宣言したオブジェクトの割り当てが解除されたことを意味します(つまり、View Controller が閉じられるかポップアウトされます)。

B.retainstrongはまったく同じです。retain_releasestrong

于 2015-01-13T23:12:01.507 に答える