我是Objective C的新手。我在许多iPhone/iPad应用程序中发现,在释放对象后,它将被设置为零。应该释放一个对象并将其设置为零?
[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
我想知道这种情况是否可能?如果是这样,有没有办法让release/nil原子?
谢谢你。有意义 – 2011-12-19 20:48:04
如果在obj属性上未设置nonatomic属性,则这是正确的。 http://developer.apple。com/library/mac /#documentation/Cocoa/Conceptual/ObjectiveC /章节/ ocProperties.html – Joel 2011-12-19 20:59:49
是的,我明白了..看下面我的评论@DBD的帖子。我使这些属性不是原子的。谢谢你:) – 2011-12-19 21:51:44