博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发20-iOS开发中要注意的循环引用
阅读量:3531 次
发布时间:2019-05-20

本文共 557 字,大约阅读时间需要 1 分钟。

iOS开发20-iOS开发中要注意的循环引用

1、计时器NSTimer

类持有了myTimer,myTimer又持有了self,造成循环引用。

NSTimer会持有对象,所以在删除对象之前,需要将timer invalidate。

    [ _myTimer  invalidate ];

    _myTimer = nil;

2、block

typedef void (^myBlock)();

@property (nonatomic, strong)   myBlock block1;

一个类属性持有了myBlock,这时,如果myBlock再持有self,必然造成循环引用。
如果有循环引用,编译器会提示警告。
如果对象没有持有Block对象,那么不会产生循环引用。
如果对象持有了block对象,那么在block引用self的时候这么定义:

__weak typeof(self) weakSelf = self;

3、代理delegate

声明delegate时要用assign(MRC)或者weak(ARC),不要使用retain或者strong,会造成循环引用。

著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

你可能感兴趣的文章
解决Ubuntu18.04使用快捷键 Ctrl+Alt+T 无法打开终端的问题
查看>>
使用原生JS将html表格保存为excel
查看>>
Apache: You don't have permission to access / on this server.
查看>>
Grunt / Gulp / Webpack / Rollup 比较
查看>>
JavaScript 打包工具 - rollup初识
查看>>
彻底弄懂typedef struct和struct定义结构体的区别
查看>>
十面斩字节,分享我的秋招心得!
查看>>
我在阿里干些啥?大学怎么过,才能去大厂实习?
查看>>
人生苦短,我用 Visual Studio Code
查看>>
C语言基础(上)
查看>>
C语言的灵魂—指针
查看>>
C语言基础(下)
查看>>
数据结构入门
查看>>
数据结构之链表
查看>>
如何使用链表实现 LRU 算法
查看>>
Go语言如何正确安装开发插件
查看>>
数据结构之栈
查看>>
小镇做题家|在 O(1)的时间内找到栈的最值
查看>>
数据结构之队列
查看>>
Kafka 学习笔记(一)
查看>>