オブジェクトのメモリアドレスが存続期間にわたって同じであるかどうかはわかりません。それは?あるいは、オブジェクトの存在の間に時々変化しますか?オブジェクトのメモリアドレスは、存続期間にわたって変化しませんか?
答えて
はい、任意のオブジェクトのアドレスはObjective-Cでは定数です。オブジェクトは常にアドレスで参照されるため、これはかなり重要です。 :-)(ガベージコレクタはオブジェクトを移動してポインタを更新しますが、ガベージコレクションはiPhoneとMacでサポートされていません。Obj-Cガベージコレクタはそれが行われないように文書化されています - Garbage Collection Programming Guide: Architecture、How the Garbageコレクターワークス)
self
を意味する場合は、はい、オブジェクトの存続期間にわたってそのまま維持されます。
私は問題で徹底的行っていないが、下のよう私の意見は以下のとおりです。オブジェクトの
メモリアドレスは静的ではないかもしれません。
たとえば、オブジェクトにはポインタはありませんが、参照はありません。JVMは、メモリ管理スキームの一部としてオブジェクトを移動し、移動したオブジェクトに従って参照値を変更する可能性があります。 また、オブジェクトは、JVMのガベージコレクション手順の一部として移動される可能性があります。
私はこれについての公式の文書を読んでいませんが、あなたが同じことに出くわした場合は、ここに投稿することができます。
同じプロセスが.NETで実行されている可能性があります。
一般的に面白いですが、iPhoneやカカオタッチの質問にはあまり関係しません。 :-) –
私はAhrumanは、オブジェクトのアドレスは永久保証されていることの上に作ることは非常に鉄壁の保証見ていないよココアガベージコレクションのプログラミングガイドで:オープンシステム対クローズ
をセクション:
'[I nオープンなガベージコレクションシステム、コレクタ]はメモリのブロックを再割り当てしてコピーし、新しいアドレスを反映するために各参照ポインタを更新します。 [...] Cocoaのガベージコレクタは、スキャンされたブロックへのポインタがどこにあるかを正確に把握し、「外部」参照を簡単に追跡し、必要な場所でのみ「保守的」であることを確認することで、 。
ココアランタイムの一般的な「ダイナミック」な性質のため、私は、ガベージコレクトされていないプログラムであっても、アップルのドキュメンテーションの件名を実際に明示的に議論したいと思っています。私は、developer.apple.comの全体を検索する際に「オブジェクトのメモリアドレスが変化しないことが保証されて」の線に沿って任意の文を見つけることができません - でGoogleを試してみてください。
site:developer.apple.com cocoa "object's memory address" OR "memory address of an object" guaranteed OR permanent
そしてありますその恐ろしい主題...マルチスレッド(あああ)。
- 1. 例外オブジェクトの存続期間
- 2. Dagger2はオブジェクトを初期化していませんか?
- 3. さまざまな期間にわたってサブグループのデータフレームの変化率を計算します。
- 4. VARCHARSがCLOBに変わったとき、JPA永続化は関係では発生しません
- 5. VB.NETオブジェクトの初期化が機能していませんか?
- 6. C++の "インスタンス化されたオブジェクトとオブジェクトの変数の中の変数"のメモリアドレス
- 7. オブジェクトが初期化されていない理由がわかりません
- 8. Cグローバルスタティック変数の初期化はリンカによって行われますか?
- 9. PIC18F XC8コンパイラ - オブジェクトは初期化されていませんか?
- 10. 関数内で定義されたC++オブジェクトの存続期間
- 11. 私の変数は初期化されていませんか?
- 12. オブジェクトはスコープのために初期化されていません
- 13. オブジェクトのjsonへの変換中にロールのコレクションを遅延して初期化できませんでした
- 14. パンダ - CUMSUM期間にわたって+ GROUPBY時間
- 15. str.find return文が間違っていますが、わかりません。理由はわかりません。
- 16. 接続が完全に初期化されていません
- 17. FragmentTransactionsまたは.commitを使用せずにフラグメントを初期化しますか?間違っている?
- 18. CakePHP3.2:save()は、セッターによってフィールドが変わっても変わっていません
- 19. コアデータはオブジェクト間の関係を保存しません
- 20. AngularJSアプリケーションは、時間の半分しか初期化しません。エラーは発生しません。
- 21. JNIのjstringのオブジェクトの存続期間はどのくらいですか?
- 22. 強化されたforループはオブジェクトを初期化できません
- 23. Swift、GCD、CoreDataエラー:エラー:NULL _cd_rawDataオブジェクトがフォールトに変わっていません
- 24. Wordpressの保存ボタンは、何か変わったことをしています
- 25. Pythonクラスがmainで初期化できません。間違ったパラメータが使用されていますか?
- 26. Object.toStringまたはObject.hashCodeはオブジェクトのメモリアドレスを指定します
- 27. ng-initを使って初期化された角型変数は常に定義されていません
- 28. オブジェクトを使用して割り当てまたは初期化していません
- 29. ExecuteNonQuery:接続プロパティが初期化されていません
- 30. "ExecuteScalar:接続プロパティが初期化されていません。"
よく、私はオブジェクトを意味します。それは別のクラスによって参照されるかもしれません。しかし、私は内部的にそれがすべて自己に終わると思います。 –