インスタンス変数にパラメータで与えられたオブジェクトを代入してみましょう。私はこのオブジェクトが何であるか分からないので、私はそれを保持したくありません。しかし、そのオブジェクトへの参照は、オブジェクトが解放されたり解放されようとしている(たとえば、自動解放プール)場合など、しばらく無効になる可能性があります。したがって、私のクラスインスタンスの中で、私がインスタンス変数に保持していた参照をクラッシュの危険なしに使用できるかどうかを知ることができますか?iPhone - 参照が(まだ)有効かどうかを知る方法はありますか?
答えて
Kris Van Baelは、オブジェクトが何であるかを知っていても、オブジェクトの所有権を持ちたい場合(オブジェクトが生きているかどうかを確認する場合)、オブジェクトを保持する必要があります。それを必要としないときに解放し、参照をNILに設定します(セキュリティのため)。
ただし、例外はです!
所有権を持ちたくない場合がありますが、最も一般的な例は代理人です。 デリゲートを保持したくないのはおそらくすでにあなたを保持しているからであり、両方のオブジェクトがdeallocメソッドで互いに解放されていると、アプリケーションがリークします。
しかし、この場合、デリゲートの割り当てを気にする必要はありません。デリゲートはdeallocメソッドで "デリゲート"プロパティをnilに設定する必要があります。
ですから、オブジェクトの所有権を持っている場合
- :保持、選択の余地!
- オブジェクトがあなたに所有権を持っている場合は、割り当てしても問題ありません。
リリースリファレンスをNIL
に設定し、NIL
を確認する必要があります。
私は、オリバーは外部のオブジェクトが他のどこかで公開されることを心配していると思います。 –
@Kris Van Bael:はい、それはそれです – Oliver
必要がなくなったら保持して放す必要があります。それはまさに保持するものです。
このアプローチは本当に危険です。あなたのアプリがオブジェクトのライフサイクルを追跡できない場合、これを制御できるようにコードを変更する必要があります。 とにかくあなたの質問に答える:インスタンス変数をクラスに余分に保持し、必要がなくなったら解放することでインスタンス変数を保護することができます。だからあなたはあなたが求めている小切手をする必要はありません。
- 1. Data Saverが有効になっているかどうかを知る方法はありますか?
- 2. javascriptでコントロールが有効かどうかを知る良い方法はありますか?
- 3. ユーザーオープンメールかどうかを知る方法はありますか?
- 4. PHP変数が参照であるかどうかを知る方法?
- 5. Win32ウィンドウポインタが有効な.Netコントロールであるかどうかを確認する方法はありますか?
- 6. スーパークラスが照会されるCriteriaQueryのサブクラス固有のフィールドを参照する方法はありますか?
- 7. wifiオプションが有効かどうかを確認する方法
- 8. ネットワークロケーションプロバイダが有効になっているかどうかを確認する方法はありますか?
- 9. オブジェクトが既に参照されているかどうかはどのように知りますか?
- 10. 正規表現のパターンがPerlで有効かどうかを確認する方法はありますか?
- 11. アプリで何もせずにネットが有効かどうかを確認する方法はありますか?
- 12. #pragma unmanagedがC++/CLIで有効かどうかを検出する方法はありますか?
- 13. xpathがIEで有効かどうかを素早く確認する方法はありますか?
- 14. PHPで、電子メールが有効かどうかを確認する方法はありますか?
- 15. テザリングが有効かどうかを確認する方法はありますか?
- 16. shared_from_this()の呼び出しが有効かどうかを確認する方法はありますか?
- 17. JDBCトランザクションが有効かどうかを判断する方法はありますか?
- 18. faviconファイルがIEに有効かどうかを確認する方法はありますか?
- 19. FirebaseユーザのUIDが有効かどうかを判断する方法はありますか?
- 20. Javaでメソッド参照を渡す方法はありますか?
- 21. wifiが有効かどうかを知るコードとiphoneにBluetoothが搭載されているかどうか
- 22. マクロの記録に絶対参照または相対参照を使用するかどうかを特定する方法はありますか?
- 23. ActiveDirectoryのユーザーがまだ有効かどうかを確認する必要があります
- 24. spline()が使うノットを知る方法はありますか?
- 25. オブザーバーがNSNotificationCenterから通知を受けたかどうかを知る方法はありますか?
- 26. 通知がAndroidで有効かどうかを確認する方法
- 27. クレジットカードが有効かどうかはどうすればわかりますか?
- 28. 入力補完が参照(&)または基準値参照(&&)であるかどうかを知ることはできますか?
- 29. iOSデバイスがリダイレクトされているかどうかだけを検出する方法はありますか?
- 30. クラス参照がインタフェースであるかどうかを識別する方法?
これはまさに私が探していたものでした。ありがとうございました ! – Oliver