block的作用域:
在使用block的过程中,block的作用域管理就像内存管理一样是非常重要的,如果不了解block的作用域,很可能让程序出现各种bug,甚至崩溃,下面我们就来介绍一下block的作用域。
1. 非ARC
block的作用域主要分为三种:堆(malloc),栈(stack),全局(global)。一般我们遇到的主要有这么一些情况:
①.未使用到外部变量的block,作用域为全局
bbk = ^{
NSLog(@"abcde");
};
如上所示,这个block主要是内部,未使用到block外部的变量,作用域为global,所以不需要调用copy
②.其他情况下,除了GCD的时候,均可认为是在stack上的,均需要调用copy,否则就有崩溃的风险