オブジェクトのメモリアドレスが存続期間にわたって同じであるかどうかはわかりません。それは?あるいは、オブジェクトの存在の間に時々変化しますか?オブジェクトのメモリアドレスは、存続期間にわたって変化しませんか?
答えて
はい、任意のオブジェクトのアドレスは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. VB.NETオブジェクトの初期化が機能していませんか?
- 3. CakePHP3.2:save()は、セッターによってフィールドが変わっても変わっていません
- 4. コアデータはオブジェクト間の関係を保存しません
- 5. Luaオブジェクト - コンストラクタの初期化が正しくありません
- 6. オブジェクトを使用して割り当てまたは初期化していません
- 7. ローカル変数が初期化されていませんか?
- 8. このオブジェクトを永続化してもパラメータは維持されません
- 9. JNIのjstringのオブジェクトの存続期間はどのくらいですか?
- 10. C#動的オブジェクトの初期化子はコンパイルされません
- 11. Object.toStringまたはObject.hashCodeはオブジェクトのメモリアドレスを指定します
- 12. プロバイダーを初期化できません。 MYSQLのスキーマが見つからないか間違っています
- 13. ES6モジュールが間違った順序を初期化していますか?
- 14. ディスパッチ後にオブジェクトが変わることはありません
- 15. ローカルに保存されたデータファイルは、エミュレータで永続的ですが、実際のiPadデバイスには残っていません...失われました
- 16. @Transactionalアノテーションを使用しているにもかかわらず、「プロキシを初期化できませんでした - セッションはありません」
- 17. 保存時にRoRがクラッシュする "あなたはオブジェクトがありません。あなたはそれを期待していませんでした"
- 18. Kohanaのセッションデータはクロームでページにわたって持続しないとIEはページをChromeで開いた後には保存されません
- 19. Spring DI - すべての依存するBeanを初期化しません。
- 20. 入れ子オブジェクトはSpring JpaRepositoryによって保存されていません
- 21. グローバル変数の初期化はいつ行われますか?
- 22. 接続プロパティが正しく初期化されていません
- 23. Fortran 2003で変数が初期化されていません
- 24. Perlグローバル変数が初期化されていません
- 25. 読み取りオブジェクトは永続化されましたが、まだdoctrineでフラッシュされていません
- 26. オブジェクトを永続化できません:永続化に渡された分離エンティティ
- 27. テーブル(グリッドビュー)にjavascriptによって行われた変更を保存します
- 28. アプリケーションの存続期間中にsqlite3の接続と保持
- 29. 初期化されていないオブジェクトvs NULLに初期化されたオブジェクト
- 30. SeekBarPreferencesは変化していますが、視覚的には変わりません。
よく、私はオブジェクトを意味します。それは別のクラスによって参照されるかもしれません。しかし、私は内部的にそれがすべて自己に終わると思います。 –