__weak和__strong关键字

前言

关于__weak和__strong关键字,__weak关键字好理解,用它修饰本类的self,可以防止block中循环引用问题,那么__strong关键字用在block中,又是怎么回事呢?

正文

废话少说,先上代码:

图1

创建一个SampleObject类对象,并且self.sample对其引用,在没有__strong修饰符修饰weaksample的情况下,3秒后对其释放,打印结果如何,看下图:

图2

在打印第四次sampleobject后(3秒后),因为self.sample置空,之后的结果都是(null)。

现在我们把图1的28行注释去掉,看下打印结果如何:

图3

可以看到即使3秒过后仍然是打印SampleObject对象,while循环结束后才对其进行释放(dealloc SampleOjbect)。

__strong修饰符作用即在block中变量如果在别处进行了释放,那么系统会等待block执行结束后才对block中变量进行释放。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容