Block分為全局Block贰谣、堆Block和棧Block
1、在定義block沒有引用外部變量的時(shí)候,block為全局的(ARC和MRC)都是這樣
// 內(nèi)部沒有調(diào)用外部變量的block
void (^block1)(void) = ^{
NSLog(@"1111");
};
2雅任、定義block有引用到外部變量的時(shí)候,在MRC的情況下block屬于棧上咨跌,容易被釋放沪么,使用的時(shí)候要copy一下,把棧上得block拷貝到堆上锌半,在ARC的情況下禽车,系統(tǒng)會(huì)自動(dòng)把棧上得block拷貝到堆上,所以使用不需要copy刊殉。
//內(nèi)部調(diào)用外部變量的block
int a = 10;
void (^block2)(void) = ^{
NSLog(@"%d",a);
}
3殉摔、在ARC下,使用copy與strong其實(shí)都一樣记焊,推薦使用copy逸月。