如何调用使用嵌套块的API方法

时间:2013-11-12 20:59:42

标签: objective-c objective-c-blocks

我使用的API具有以下方法签名:

- (BOOL)executeCommandIfConfirmed:
     (void (^)(void (^confirmationAnswer)(BOOL answer)))confirmationBlock;

有人能举例说明正确的电话会是什么样子吗?我很挣扎。

1 个答案:

答案 0 :(得分:2)

[object executeCommandIfConfirmed:^(void (^confirmationAnswer)(BOOL answer)) {
   confirmationAnswer(TRUE);
}];

修改

如果你想使用UIAlertView,你必须像往常一样创建一个类作为它的委托,但是你会将回调块传递给委托的构造函数并将其存储在一个领域。然后代理人的-alertView:didDismissWithButtonIndex:将回调回调块。

但是如果你还在使用块,为什么不使用PSAlertViewAlertView周围基于块的包装器:

[object executeCommandIfConfirmed:^(void (^confirmationAnswer)(BOOL answer)) {
   PSAlertView *alert = [PSAlertView alertWithTitle:@"Alert" 
          message:@"Do you want to continue?"];
   [alert addButtonWithTitle:@"Yes" block:^{ confirmationAnswer(TRUE); }];
   [alert setCancelButtonWithTitle:@"No" block:^{ confirmationAnswer(FALSE); }];
   [alert show];
}];