Como escrever blocos Objective-C

Uma vez que existem algumas maneiras de escrever blocos Objective-C, aqui estão alguns trechos para não esquecê-los.

Sem artumentos:

void (^block1)() = ^{
};
block1
();

Com alguns argumentos:

NSInteger (^block2)(NSInteger, NSObject *) = ^(NSInteger arg1, NSObject *arg2) {
return arg1;
};
block2
(0, nil);

Com typedef

typedef void (^Block3)(id, NSError *);
typedef void (^Block4)(id response, NSError *error);
Block4 block4 = ^(id response, NSError *error) { };

Com @property

@interface Object : NSObject

@property (nonatomic, copy) void (^block5)(id, NSError *);

@end