0
我的方法有一個塊,稱爲completionBlock
。我想在我的函數中調用completionBlock()
來添加一段代碼,這個代碼將在這個completionBlock被執行後執行。執行塊後執行塊中的一段代碼
像超級塊的completionBlock。
當然,我可以在實際塊的底部做到這一點,但我在很多地方使用它會很麻煩。
謝謝!
我的方法有一個塊,稱爲completionBlock
。我想在我的函數中調用completionBlock()
來添加一段代碼,這個代碼將在這個completionBlock被執行後執行。執行塊後執行塊中的一段代碼
像超級塊的completionBlock。
當然,我可以在實際塊的底部做到這一點,但我在很多地方使用它會很麻煩。
謝謝!
只需創建一個新塊,調用completionBlock
,然後運行您的額外代碼。使用新塊作爲完成塊。
例子:
- (void)animateDownWithCompletion:(void (^)(BOOL finished))completion {
[UIView animateWithDuration:1 animations:^{
CGPoint center = self.view.center;
center.y += 10;
self.view.center = center;
} completion:^(BOOL finished) {
if (completion) {
completion(finished);
}
NSLog(@"more completion code here!");
}];
}
或用變量:
void (^originalCompletionBlock)(BOOL finished) = ...;
void (^newCompletionBlock)(BOOL finished) = ^(BOOL finished) {
if (originalCompletionBlock) {
originalCompletionBlock(finished);
}
NSLog(@"more completion code here!");
};
謝謝,非常好的代碼!雖然第一眼看起來有點嚇人。 – Devfly 2013-04-25 20:44:50
是否有一個原因,你不能只把代碼調用completionBlock後? – Chuck 2013-04-25 21:23:32