不会被自动copy到堆的情况:
在ARC模式下,block作为函数的参数传递时不会被copy到堆上。但有两个例外,一是,方法名中含有usingBlock的Cocoa框架方法或GCD的API传递block时。
会被copy到堆上的情况:
- 调用Block的copy方法
- Block作为函数返回值
- 将Block赋值给
__strong修饰符id类型的类或Block类型的成员变量时。 - 方法名中含有
usingBlock的Cocoa框架方法或GCD的API传递block时。
不会被自动copy到堆的情况:
在ARC模式下,block作为函数的参数传递时不会被copy到堆上。但有两个例外,一是,方法名中含有usingBlock的Cocoa框架方法或GCD的API传递block时。
会被copy到堆上的情况:
__strong修饰符id类型的类或Block类型的成员变量时。usingBlock的Cocoa框架方法或GCD的API传递block时。