关于self的弱引用

我们如果在代码中频繁的使用block的话就会注意到block的循环引用的问题这里就要 用到了self的弱引用。弱引用的形式有很多常见的有三种:若果self的类型是UIViewController 则可以如下:

  • 方法1
 __weak  UIViewController * weakSelf = self;
  • 方法2
__weak typeof(self) weakSelf = self;

这里着重的介绍一下这个经常用的typeof()这事C语言中的一个函数,它可以锁区括号内的表达式的类型。可以理解为OC重的id 它可以获取到当前self的类型的指针,这样的话就可以写成宏表达式在其它的地方使用起来就会方便很多。

  • 方法3
@weakfy(self)
Block = ^{
@strongfy(self)
self.view = ........
}

这个黑魔法的写法我首次看到是在RAC中的只要记得这个也是对self的一个弱引用就好了。而且,这两个必须是要成对出现的。要不然会报错。

具体的实现原理小弟还未搞懂。有时间在做研究谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容