1、定義格式
void (^block)()=^{ ? ? ?//無(wú)參無(wú)返回值
NSLog(@“helloworld”);
}
int (^myBlock)(int ,int )=^(int x,int y){ ? ? ? //有參有返回值,此時(shí)myBlock為變量名
return x+y;
}
2、typedef用法
typedef ?int(^myBlock)(int ,int ); //此時(shí)myBlock為類型
myBlock b1,b2;
3、訪問(wèn)外部變量
當(dāng)定義block的時(shí)候,會(huì)把外部變量以const(只讀)的方式復(fù)制一份存放到block的所在內(nèi)存中。
(1)不允許修改外部變量
int m=10;
void (^block)()=^{
m=100; ? ? ? ? ? ? ? ?//錯(cuò)誤
NSLog(@“m=%d”,m);
}
(2)允許修改
__block int m=10;
void (^block)()=^{
m=100; ? ? ? ? ? ? ? ?//正確
NSLog(@“m=%d”,m);
}
NSLog(@“m=%d”,m); ? //此時(shí)m=100