仪器崩溃,但没有调试

时间:2016-09-16 07:36:27

标签: ios objective-c xcode core-data

我在iOS10中遇到奇怪的行为,我的应用程序在仪器中崩溃,但在调试时运行它却没有。仪器崩溃只提供信息输出<End of Run>哦,这一切在iOS9中都能正常工作。

通过广泛的NSLog,我已经将它缩小到这段代码,这真的很奇怪的是,添加NSLog实际上会阻止崩溃,很奇怪。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"template.draft IN (%@)", draftSet];
request.predicate = predicate;
NSLog(@"request: %@", request); // Crashes

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"template.draft IN (%@)", draftSet];
NSLog(@"predicate: %@", predicate);
request.predicate = predicate;
NSLog(@"request: %@", request); // Works

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"template.draft IN (%@)", [draftSet allObjects];
request.predicate = predicate;
NSLog(@"request: %@", request); // Works

draftSet是一堆错误所以我认为NSLog或allObject导致错误触发,从而修复了崩溃。

有什么想法吗?

编辑:关闭编译器优化可以解决崩溃问题,我想这可以解释为什么它会在仪器中发生而不是调试。

0 个答案:

没有答案