在block内直接访问成员变量

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();

你可能感兴趣的:(在block内直接访问成员变量)