gpt4 book ai didi

ios - [[NSRunLoop currentRunLoop] runMode :* beforeDate:*]; 中的 BAD EXC

转载 作者:行者123 更新时间:2023-11-29 10:58:47 26 4
gpt4 key购买 nike

我正在尝试通过单元测试对我的应用进行一些压力测试,但遇到了一些问题。下面是我的代码:

    //Stress test api and core data
__block BOOL done = NO;
for (int i = 0; i < 100 ; i++) {
DLog(@"in here");
[viewController createList:testList
success:^(Lists *list) {
DLog(@"in success block : %d", i);
STAssertNotNil(list, @"list is not nil");
done = (i == 99);
}
failure:^(NSError *error) {
DLog(@"in fail block");
}
];
}

@autoreleasepool {

while (!done) {
// This executes another run loop.
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
}

问题是,经过几次迭代后,我在线上得到了一个错误的访问错误

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

因为 this post,我已经将 while 循环放在 @autorelease 中.我在项目中使用 ARC,所以我不知道这是否会导致问题......?我需要使用 NSRunLoop 强制单元测试等待 block 完成。

有人遇到过这个问题吗?

最佳答案

在类似的情况下,我采用了不同的方法,但效果很好。我所做的是在主测试中,使用 dispatch_group_async 到普通队列,然后在主测试中等待组完成。这工作得很好,你不会弄乱单元测试的运行循环。

如果出于某种原因上述内容 Not Acceptable ,则尝试不使用任何自动释放池以查看是否可行如果可行,则将其移至 while 中。使用 ARC,对自动释放池的需求大大减少。您也可以使用 Instruments 观察内存使用情况。

关于ios - [[NSRunLoop currentRunLoop] runMode :* beforeDate:*]; 中的 BAD EXC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com