私はObjective Cを初めて使っています。多くのiPhone/iPadアプリケーションでは、オブジェクトをリリースした後にnilに設定されることがあります。オブジェクトを解放し、それをアトミックにする必要がありますか?
[self.obj release]
self.obj = nil;
これは、割り当てが解除されたメモリ位置を参照するポインタを残さないようにすると仮定します。ここで、次の状況を想定してください。
//Thread #1 code
..some code
..some code
[self.obj release]
-------> Thread #2 runs //Thread #2 code
..some code
if (self.obj){
some code
}
self.obj = nil; <----- Thread #1 runs
この状況が可能かどうかは疑問でしたか?それがあれば、リリース/ nilをアトミックにする方法はありますか?
ありがとう男。意味する –
obatプロパティにnonatomic属性が設定されていない場合、これは正しいです。 http://developer.apple。com/library/mac /#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html – Joel
はい、私は気付いています。私はそのプロパティを非原子性にしました。ありがとうtho :) –