跳到主要内容

__block 在 ARC 和非 ARC 下含义一样 吗? ?

参考答案:

在iOS开发中,__block关键字在ARC(Automatic Reference Counting,自动引用计数)和非ARC环境下的含义并不完全相同。

在ARC环境下,__block修饰的变量会被引用,并且其引用计数会增加1。这意味着,只要这个Block存在,该变量就不会被释放,从而避免了因变量提前被释放而导致的错误。

而在非ARC环境下,__block修饰的变量的引用计数并不会发生变化。这意味着,开发者需要手动管理这个变量的生命周期,以避免出现内存泄漏或提前释放的问题。

此外,对于Block中的循环引用问题,在ARC环境下,开发者通常会使用__weak来修饰Block中的对象,以避免循环引用。而在非ARC环境下,开发者则可能需要使用__block来解决这个问题。

综上所述,__block在ARC和非ARC环境下的含义并不相同,开发者需要根据具体的环境和需求来选择使用。