ios block 笔记

1.对于 block    以外的   变量,如果把它放在了block内进行访问(或者赋值),一旦进入block体中

(1).基本类型变量会被block进行一次copy后以一个临时变量存放在block体中

(2).指针变量会被block进行一次的retain后以一个临时变量存放

无论是基础类型数据还是指针,被block使用了,就表明它的生命周期除了自己本身所在的作用域,又多出一个block体的作用域


2.当一个变量被__block修饰,block体中就会知道,即使block使用这个  外部变量,也不会进行retain或copy  (非arc)

  当一个变量被__weak修饰,block体中就会知道,即使block使用这个  外部变量,也不会进行retain或copy  (arc)


3.如果block是作为一个类的成员对象存在的,那么block体中最好不要直接对于此类的其他成员变量进行使用,因为block一旦发现体内存在类的其他成员变量,就会对类的对象self进行retain。这样的话,包括self自己创建出来的那次引用计数,self就同时被引用计数2次,可能造成强引用的循环而无法真正释放类的对象

如果要使用的话,用2中方法


4. 使用block是要注意,若将block做函数参数时,需要把它放到最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值