2015-02-20 3 views
0

У меня есть метод, который выполняет действие.Как я могу дождаться завершения делегирования, прежде чем возвращать обработчик завершения в методе?

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

ответ

3

Если вы можете гарантировать, что именно один из них в то время, вы могли бы добавить свойство к классу:

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

, а затем в mutualDeleteDialog:

self.successBlock = successBlock; 

, а затем в completedWithResult:

self.successBlock(); 

Это довольно нетрадиционный. Возможно, вы захотите переоценить то, что вы пытаетесь сделать. Возможно, лучший способ.

Смежные вопросы