2009-08-11 12 views

答えて

5

はい、任意のオブジェクトのアドレスはObjective-Cでは定数です。オブジェクトは常にアドレスで参照されるため、これはかなり重要です。 :-)(ガベージコレクタはオブジェクトを移動してポインタを更新しますが、ガベージコレクションはiPhoneとMacでサポートされていません。Obj-Cガベージコレクタはそれが行われないように文書化されています - Garbage Collection Programming Guide: Architecture、How the Garbageコレクターワークス)

0

selfを意味する場合は、はい、オブジェクトの存続期間にわたってそのまま維持されます。

+0

よく、私はオブジェクトを意味します。それは別のクラスによって参照されるかもしれません。しかし、私は内部的にそれがすべて自己に終わると思います。 –

-1

私は問題で徹底的行っていないが、下のよう私の意見は以下のとおりです。オブジェクトの

メモリアドレスは静的ではないかもしれません。

たとえば、オブジェクトにはポインタはありませんが、参照はありません。JVMは、メモリ管理スキームの一部としてオブジェクトを移動し、移動したオブジェクトに従って参照値を変更する可能性があります。 また、オブジェクトは、JVMのガベージコレクション手順の一部として移動される可能性があります。

私はこれについての公式の文書を読んでいませんが、あなたが同じことに出くわした場合は、ここに投稿することができます。

同じプロセスが.NETで実行されている可能性があります。

+0

一般的に面白いですが、iPhoneやカカオタッチの質問にはあまり関係しません。 :-) –

-1

私はAhrumanは、オブジェクトのアドレスは永久保証されていることの上に作ることは非常に鉄壁の保証見ていないよココアガベージコレクションのプログラミングガイドで:オープンシステム対クローズ

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/Articles/gcArchitecture.html

をセクション:

'[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 

そしてありますその恐ろしい主題...マルチスレッド(あああ)。

関連する問題