如何在方法中返回完成处理程序之前等待委托完成?

时间:2015-02-20 14:35:09

标签: ios xcode delegates objective-c-blocks quickblox

我有一个执行操作的方法。

- (void)mutualDeleteDialog:(QBChatDialog *)dialog success:(void (^) ())successBlock failure:(void (^)(NSError *))failureBlock {
  QBChatMessage *deleteMessage = [self generateDeleteDialogMessage:dialog];
  [self sendMessage:deleteMessage success:^{
    [QBChat deleteDialogWithID:dialog.ID delegate:self];
  } failure:^(NSError *error) {
    failureBlock(error);
  }];

deleteDialogWithID方法调用第三方服务并在完成时调用委托方法。当调用这个委托方法时,我想将成功/失败块返回给我原始方法的调用者......这是可能的,我该怎么做?

//Delegate Method
- (void)completedWithResult:(QBResult *)result {
  successBlock();
}

1 个答案:

答案 0 :(得分:3)

如果您可以保证一次只有其中一个,您可以为您的班级添加一个属性:

@property (copy) void(^successBlock)();

然后在mutualDeleteDialog

self.successBlock = successBlock;

然后在completedWithResult

self.successBlock();

这非常传统。您可能想要重新评估您正在尝试做的事情。可能有更好的方法。