我突然收到了SIGABRT,dispatch_once如下面的 Xcode 所示。
最近没有添加任何更改使用dispatch_once.
dispatch_once(predicate, block);线程 1:信号 SIGABRT
#if DISPATCH_ONCE_INLINE_FASTPATH
DISPATCH_INLINE DISPATCH_ALWAYS_INLINE DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
DISPATCH_SWIFT3_UNAVAILABLE("Use lazily initialized globals instead")
void
_dispatch_once(dispatch_once_t *predicate,
DISPATCH_NOESCAPE dispatch_block_t block)
{
if (DISPATCH_EXPECT(*predicate, ~0l) != ~0l) {
dispatch_once(predicate, block);
} else {
dispatch_compiler_barrier();
}
DISPATCH_COMPILER_CAN_ASSUME(*predicate == ~0l);
}
#undef dispatch_once
#define dispatch_once _dispatch_once
#endif
#endif // DISPATCH_ONCE_INLINE_FASTPATH
Run Code Online (Sandbox Code Playgroud)
就我而言,当故事板和类文件添加到项目中,并自动添加到主目标,但未添加到辅助目标的目标成员资格时,就会出现此问题。
该问题仅发生在 iOS 模拟器中,使用我们专门用于模拟器的目标。
由于没有对该类的实际引用,编译器未捕获该问题。相反,使用对 Storyboard 名称的字符串类型引用来构造视图:
[UIStoryboard storyboardWithName:@"storyboardFileThatWasNotAddedToThisTarget" bundle:nil];
Run Code Online (Sandbox Code Playgroud)
通过将新文件添加到辅助目标来修复:
通过向 Xcode 调试器添加异常断点发现问题。
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |