在完成块参数中添加代码

Add code in a completion block parameter

抱歉,如果这个问题已经被问过。我找不到好的关键字来回答...

在完成块中,是否可以在块变量之前或之后添加代码?

我想做这样的事情:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion {
    [super presentViewController:viewControllerToPresent animated:flag completion:^{
        //some code I add here
        completion();
    }];
}

我在尝试执行此操作时遇到 EXC_BAD_ACCESS 错误。

编辑:问题是由于使用 "completion()" 而没有检查它是否为 nil 引起的。

当然,您可以在您有意见的地方添加代码。您的崩溃是由其他一些问题引起的,例如未初始化的变量,或者您可能正在使用超出范围的局部变量。