我正在尝试用完成块编写一个方法:
//typedef head of block
typedef void (^CommonErrors)(NSError *error);
//method with block
-(void)MethodWithString:(NSString*)string onError:(CommonErrors)ErrorBlock;
//somewhere in code:
[self MethodWithString:(NSString*) onError:^(NSError *error)ErrorBlock];
如果我双击^(NSError *error)ErrorBlock
,那就没关系了
然后我会得到这段代码:^(NSError *error){code}
[self MethodWithString:(NSString*)
onError:^(NSError *error){
code
}
];
但每次,当我使用此CommonErrors
时,
我使用我的模板:onError:(CommonErrors)ErrorBlock
。
我的代码到处都是这样的:
onError:^(NSError *error){
ErrorBlock(error)
}
我可以通过在某处定义此模板来完成此操作吗?或类似的东西?可能吗?
答案 0 :(得分:2)
实际上我只是重读了你的问题 - 块类型永远不会在使用者方法签名中使用。这样做的原因是,如果不查看类型,其他人如何知道要传递哪些参数?
您看到的行为是设计的,块的typedef扩展为实际签名。
显然这是一个代码段问题。
请参阅此http://nearthespeedoflight.com/article/xcode_4_code_snippets