你可以絕對嵌套在其他人的內部。
下面是一個小例子,以說明它是如何工作的。顯然,這裏的方法是相當空,但它只是讓你有一個想法:
- (void) networkCallWithCompletionBlock:(void (^)(NSString *response))completed {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
completed(@"My amazing response");
});
}
- (void) methodWithCompletionBlock:(void (^)(BOOL success))completed {
[self networkCallWithCompletionBlock:^(NSString *response) {
completed([response isEqualToString:@"My amazing response"]);
}];
}
- (void) buttonPress() {
[self methodWithCompletionBlock:^(BOOL success) {
NSLog(@"%@", @(success));
}];
}
每當你調用該方法buttonPress
,就會引發兩個異步方法的鏈,和之後的消息將被打印0.5秒。
所以這是什麼問題? –
如何完成自定義類,在完成另一個完成後觸發。 – GeneCode