Block中的循环引用问题

本文详细解析了循环引用的概念及其在iOS开发中的常见问题,通过实例展示了如何利用block机制解决循环引用问题,并阐述了block在数据逆传递、回调功能实现等场景的应用。同时,文章还介绍了block在iOS开发中的核心作用及注意事项。

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也可以将一个操作当做参数来传递




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值