我在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导致错误触发,从而修复了崩溃。
有什么想法吗?
编辑:关闭编译器优化可以解决崩溃问题,我想这可以解释为什么它会在仪器中发生而不是调试。