-
在block内部使用外部指针且会造成循环引用情况下,需要用__weak修饰外部指针
__weak typeof(self) weakSelf = self;
-
在block内部如果调用了延时函数还使用弱指针会取不到该指针,因为已经被销毁了,需要在block内部再将弱指针重新强引用一下
__strong typeof(self) strongSelf = weakSelf;
-
如果需要在block内部改变外部变量的话,需要在用__block修饰外部变量
__block int a = 2;
-
在使用block前需要对block指针做判空处理。不判空直接使用,一旦指针为空直接产生崩溃。
if (block == NULL) { //后面使用block之前要先做判空处理 return; } id data = [NSKeyedUnarchiver unarchiveObjectWithFile:[self favoriteFile]]; if ([data isKindOfClass:[NSMutableArray class]]) { block(data,YES); } else { block(nil,YES); }
网友评论