我正在编写一个客户端应用程序,调用 API 并在回调方法中处理结果。
方法定义如下:
//Current implementation
[_myAPIInterface dataByName:name withCallback:^(NSError *error, NSDictionary *result) {
//Method body.. processing the results
if (error) {
return;
}
else{
[self.activityIndicator stopAnimating];
}
}];
我希望能够将回调块定义为一个可以调用的单独函数,因此每当我作为客户端调用 API 并传递不同的参数(例如按名称、按年龄)时,我都可以传递相同的块/方法来处理结果并避免实施两次。
//Desired implementation/approach
[_myAPIInterface dataByName:name withCallback:^(NSError *error, NSDictionary *result) {
[self sharedMethod:error :results];
}];
[_myAPIInterface dataByAge:age withCallback:^(NSError *error, NSDictionary *result) {
[self sharedMethod:error :results];
}];
approach/implement
呢?是的,您可以将块分配给一个变量并将该变量传递给每个方法。
void (^callback)(NSError *, NSDictionary *) = ^(NSError *error, NSDictionary *result) {
//Method body.. processing the results
if (error) {
return;
}
else {
[self.activityIndicator stopAnimating];
}
};
[_myAPIInterface dataByName:name withCallback:callback];
[_myAPIInterface dataByAge:age withCallback:callback];
您只是从块中调用一个方法,这很好,没有什么特别的。您已经从块中调用了
stopAnimating
方法。