自定义block类型
block与struct一样,都是自定义的类型。申明格式为“returnType(^typeName)(argType argName,…)”。可以与typedef
连用,方便之后定义block对象,也可以在申明的同时定义block对象,这种情况下,可以省略typeName,即申明
匿名block类型“returnType(^)(argType argName,…)”。
block字面量
^returnType(argType argName,…){//do something…}
returnType可以省略,即^(argType argName,…){//do something…}
当不需要参数时,可以写成^{//do something…}
注意
block对象可以以只读的方式使用在block之前定义的局部变量,如果需要修改局部变量,则需要为局部变量加
上“__block”关键字修饰。block中引用的局部变量都会加上一个强引用,可以使用“__weak”关键字使其成为弱引
用。常见用法是“__weak MyClass *weakSelf = self;”。