0

我的方法有一个名为completionBlock. 我想在我的函数中调用completionBlock()添加一段代码,该代码将在执行完此完成块后执行。

类似于超级块的完成块。

当然,我可以在实际块的底部进行,但是我在很多地方都使用它,这会很麻烦。

谢谢!

4

1 回答 1

1

只需创建一个调用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!");
};
于 2013-04-25T20:33:32.837 回答