1.在block内直接访问成员变量,会造成循环引用.
解决办法:
在blcok外部 __weak typeof(self)weakSelf = self;
在block内部__Strong typeof(weakSelf)strongSelf = weakSelf;
访问成员变量的方法
strongSelf->***;
在blcok内部修改值以后打印地址,发现地址发生了变化.
例子:
__weak typeof(self)weakSelf = self;
self.testBlock= ^{
__strongtypeof(weakSelf) strongSelf = weakSelf;
strongSelf.p.name=@"wang";
strongSelf->_maxIndex=@"ok";/// 注意修改的时候地址发生了变化
NSLog(@"_maxIndex == %p", strongSelf->_maxIndex);
};
self.testBlock();
网友评论