【问题标题】:How can I wait for delegate to complete before returning completion handler in method?如何在方法中返回完成处理程序之前等待委托完成?
【发布时间】:2015-02-20 14:35:09
【问题描述】:

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

- (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();
}

【问题讨论】:

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


    【解决方案1】:

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

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

    然后在mutualDeleteDialog:

    self.successBlock = successBlock;
    

    然后在completedWithResult:

    self.successBlock();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多