iOS WeakSelf宏的进化

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

一、概念


1.防止如block的循环引用时,会使用__weak关键字做如下定义:

  __weak typeof(self) weakSelf = self;

  使用:  [weakSelf addSubViews];


2.写成宏的方法:

  #define WeakSelf     __weak typeof(self) weakSelf = self;

  使用:  [WeakSelf addSubViews];


3.宏的优化,让部分的变量也可以使用weak

  #define WeakObj(o)     __weak typeof(o) o##Weak = o;


  使用: WeakObj(self)

  [selfWeak addSubViews];


4.利用了@autoreleasepool{}这个系统的关键字来实现,添加了@符号在前面,看起来更原生


  #define WeakObj(o) autoreleasepool{} __weak typeof(o) o##Weak = o;


  使用:

  @WeakObj(self)

  [selfWeak addSubViews];


5.利用了try{}@finally{}这个系统的关键字来实现,添加了@符号在前面,看起来更原生


  #define WeakObj(o) try{}@finally{} __weak typeof(o) o##Weak = o;

  使用:

  @WeakObj(self)

  [selfWeak addSubViews];


注意:

  1.这部分空的@try或者空的@autoreleasepool会在编译时被优化掉,不必担心性能问题。

  2.实际开发中常用3条和5条的定义方式


谢谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值