0

我正在尝试编写一个带有完成块的方法:

//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
               }
];

但是每次,当我使用 this 时CommonErrors
我都会使用我的模板:onError:(CommonErrors)ErrorBlock.
我的代码到处都是这样的:

onError:^(NSError *error){
    ErrorBlock(error)
}

我可以通过在某处定义此模板来做到这一点吗?或者类似的东西?是否可以?

4

1 回答 1

2

实际上,我只是重读了您的问题-块类型永远不会在消费者方法签名中使用。这样做的原因是,其他人如何不看类型就知道要传递哪些参数?

您看到的行为是设计使然,块的 typedef 扩展为实际签名。

显然这是一个代码片段问题。

请参阅此http://nearthespeedoflight.com/article/xcode_4_code_snippets

于 2012-08-31T09:34:28.347 回答