【发布时间】:2011-12-19 20:01:12
【问题描述】:
我是 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
我想知道这种情况是否可能?如果是,有没有办法使 release/nil 成为原子的?
【问题讨论】:
标签: objective-c ios multithreading cocoa-touch