Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在XCTests中使用[NSOperationQueue mainQueue]_Ios_Objective C_Xcode5_Nsoperationqueue_Xctest - Fatal编程技术网

Ios 在XCTests中使用[NSOperationQueue mainQueue]

Ios 在XCTests中使用[NSOperationQueue mainQueue],ios,objective-c,xcode5,nsoperationqueue,xctest,Ios,Objective C,Xcode5,Nsoperationqueue,Xctest,我正在使用XCTest测试代码的一部分,XCTest还将在主队列上添加NSO操作。 看起来是这样的: [NSOperationQueue mainQueue]添加操作锁:^{ //这里发生了一些代码 }]; 代码在设备上或模拟器中运行应用程序时运行,但在运行单元测试时根本不运行(我无法到达块的第一行上的调试点) 电话: [NSOperationQueue mainQueue]等待所有操作完成] 也没用 有什么建议吗?我想我缺少一些初始化队列的代码 *编辑* 感谢您的回答,我添加了完整的结果代码:

我正在使用XCTest测试代码的一部分,XCTest还将在主队列上添加NSO操作。 看起来是这样的:

[NSOperationQueue mainQueue]添加操作锁:^{
//这里发生了一些代码
}];

代码在设备上或模拟器中运行应用程序时运行,但在运行单元测试时根本不运行(我无法到达块的第一行上的调试点)

电话:

[NSOperationQueue mainQueue]等待所有操作完成]

也没用

有什么建议吗?我想我缺少一些初始化队列的代码

*编辑*

感谢您的回答,我添加了完整的结果代码:

// add as many operations as you'd like to the mainQueue here
__block BOOL continueCondition = YES;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    // this should be the last operation
    continueCondition = NO;
}];
while (continueCondition)  {
    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} // continue your test here
这是因为mainQueue保证是非并发的,所以添加的最后一个操作将是最后一个执行的操作-这样您甚至不必更改代码来停止测试循环。


此外,它也很有帮助。

请参阅Re;你对Kazuki答案的编辑(我看到你改变了主意)。如果您喜欢使用该内容添加您自己的答案,包括您使用的代码,为什么它会起作用等等。然而,这样的答案会放在答案框中,而不是问题本身;请参见“回答您自己的问题”按钮