黑马程序员技术交流社区

标题: 在使用一个weak的 property 前应该注意的 [打印本页]

作者: yanggangcl    时间: 2015-11-4 22:29
标题: 在使用一个weak的 property 前应该注意的
在使用一个weak的 property 前应该注意检测该property是否为nil,如果是类似检测strong的property的方法则为:
  1. if (self.someWeakProperty) {
  2.     [someObject doSomethingImportantWith:self.someWeakProperty];
  3. }
复制代码

但是这样是有问题的,因为如果是多线程操作,则可能在检测过程中被dealloc掉了,所以正确的方法应该是:
  1. NSObject *cachedObject = self.someWeakProperty;
  2. if (cachedObject) {
  3. [someObject doSomethingImportantWith:cachedObject];  
  4. }
  5. cachedObject = nil;
复制代码

与第一种的检测方法的区别在于,用strong指针指向它,保证它在被检测的过程中还活着,不会被dealloc掉。
最后不要忘了撤掉strong指针
作者: 王世杰    时间: 2015-11-4 22:37
好难啊!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2