A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在使用一个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指针

1 个回复

正序浏览
好难啊!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马