__block在ARC和非ARC下有什么不同

Posted StarainDou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__block在ARC和非ARC下有什么不同相关的知识,希望对你有一定的参考价值。

一般在block中修改变量都需要事先加block进行修饰。
在非arc中,
block修饰的变量的引用计算是不变的。
在arc中,会引用到,并且计算+1;
非arc下可使用(arc直接使用__weak即可)

//非ARC
__block typeof(self) weakSelf = self;
self.myBlock = ^(int paramInt){ 
//使用weakSelf访问self成员
 [weakSelf anotherFunc];
};

这样可以解决循环引用问题。

 

starain Dou 豆电雨

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文链接:http://www.jianshu.com/p/2d67c8e3d6d1

以上是关于__block在ARC和非ARC下有什么不同的主要内容,如果未能解决你的问题,请参考以下文章

__block在MRC ARC下的区别

__block 和__weak

带有块、ARC 和非 ARC 的 Objective C 内存管理

__block和__weak

iOS 知识点

为啥 ARC 的 objc_autoreleaseReturnValue 的实现对于 x86_64 和 ARM 不同?