2009-08-23 3 views
4

クラスゼロインスタンスを割り当てたときに、私の代わりに何らかのメモリゼロ化の目的がありますか?私はアウトレットがデフォルトでnilであることを前提とした、多くの客観的なコードを見ています。私が同じことをすれば、私はそのような振る舞いを誤った口実に基づいていますか?Objective-Cクラスのインスタンスがallocでゼロになっていますか?

答えて

8

NSAllocateObjectは、クラス内のすべてのivarsを含むのに十分な大きさのメモリブロックを返します。そのisaポインタがクラスに設定され、残りのブロックは0で埋められます。+[NSObject alloc]+[NSObject allocWithZone:]を呼び出すと、内部でNSAllocateObjectが呼び出されます。

8

はい、割り当てられたオブジェクトはすべてゼロになります。 NSObject alloc documentationを参照してください。それは言語によって保証されていますので、そうするのが完全に安全です。そして、実際にメンバーを0に設定することは自分自身が冗長になるでしょう。

関連する問題