如何在Objective C中声明Block?

630 阅读1分钟

坚持,春暖花开.jpg

本文翻译自http://fuckingblocksyntax.com/

作为局部变量:

  returnType(^blockName)(parameterTypes) = ^returnType(parameters) {...};

作为属性:

  @property (nonatomic, copy) returnType (^blockName)(parameterTypes);

作为参数:

  - (void)someMethodThatTakesABlock:(returnType (^nullability)(parameterTypes))blockName;

作为方法调用参数:

  [someObject someMethodThatTakesABlock:^returnType (parameters) {...} ];

作为typedef

  typedef returnType (^TypeName)(parameterTypes);
  TypeName blockName = ^returnType(parameters) {...};