Block中的循环引用问题

来源:互联网 发布:voip软件电话 编辑:程序博客网 时间:2024/05/21 22:13

1 循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。


解决办法:

__weak typeof (self) weakSelf = self;
如:

@property(nonatomic, readwrite, copy) completionBlock completionBlock;//========================================__weak typeof(self) weakSelf = self;self.completionBlock = ^ {    if (weakSelf.success) {        weakSelf.success(weakSelf.responseData);    }};

responseData 是self的另一个属性。


iOS    block机制

block是一个代码块。在objc中通常使用block实现代理方法实现的功能,也就是回调。使用代理需要设置代理的数据接收者,而且代理方法是被分离开来处理的,block可以将这些分离的代码放到一个代码块中。

作用:

1.保存代码。一段代码在合适的时间执行(例如请求成功时弹出一个提示框)。

 

2.block一般用来两个的类的数据逆传递(例如修改昵称的时候)

 

3.block也可以将一个操作当做参数来传递




0 0
原创粉丝点击