没有调用目标 C 完成块

Posted

技术标签:

【中文标题】没有调用目标 C 完成块【英文标题】:Objective C completion block doesn't get called 【发布时间】:2018-02-27 18:13:49 【问题描述】:

我试图在单元测试中调用完成块,但它永远不会到达。 代码如下:

[vc configureRecorder:^
    NSLog(@"Completion...");
];

这是方法:

-(void)configureRecorder:(void(^)(void))callback 
    NSLog(@"Method");

【问题讨论】:

我假设您确实在 @"method" 内部的某个地方调用了 callback()?如果你没有那么你为什么期望它被调用。如果你这样做了 - 怎么样?请注意在主线程上执行单元测试,不要等待其他线程中发生任何异步操作。如果是这样 - 看看 XCTestExpectation developer.apple.com/documentation/xctest/xctestcase/… 【参考方案1】:

您需要在方法结束时调用完成块。像这样:

-(void)configureRecorder:(void(^)(void))callback 
    //@"Method"
    callback()

【讨论】:

以上是关于没有调用目标 C 完成块的主要内容,如果未能解决你的问题,请参考以下文章

在测试目标下未调用 MagicalRecord 完成块

在目标c中使用完成块完成方法后如何执行另一种方法?

在目标 c 中调用 Swift 完成处理程序

UIImagePicker 完成或取消后调用 popToRootViewControllerAnimated? (iPhone,目标 C)

如何在目标 c 中使用 GCD dispatch_async 调用/编写以下方法

CAShapeLayer 动画的完成块