iOS收藏

__weak和__strong关键字

2018-06-03  本文已影响602人  MrGan先生

前言

关于__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中变量进行释放。

上一篇 下一篇

猜你喜欢

热点阅读