__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环境下的含义并不相同,开发者需要根据具体的环境和需求来选择使用。