执行块后,在块中执行一段代码

时间:2013-04-25 20:23:58

标签: iphone objective-c xcode cocoa-touch objective-c-blocks

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

类似于超级块的completionBlock。

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

谢谢!

1 个答案:

答案 0 :(得分: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!");
};