应用程序在`once.h`中使用SIGABRT崩溃来定义`dispatch_once`

时间:2017-06-28 17:35:08

标签: ios xcode cocoa

我突然收到SIGABRT中的dispatch_once,如下面的Xcode所示。

最近未添加使用dispatch_once

的更改

此问题仅发生在iOS模拟器中,使用我们专门用于模拟器的目标。

dispatch_once(predicate, block);

中的SIGABRT

SIGABRT in dispatch_once

#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

3 个答案:

答案 0 :(得分:1)

就我而言,它是由{strong> Key here}使用 KeychainItemWrapper 引起的,但未通过日志或异常跟踪确认。我放弃了那个旧的类,并用现代的解决方案 SAMKeychain 代替了它。

答案 1 :(得分:0)

将Storyboard和Class文件添加到项目中时会发生此问题,并自动添加到主Target,但 not 已添加到辅助Target的目标成员身份。

由于没有对该类的实际引用,编译器未捕获该问题。相反,使用对Storyboard名称的字符串类型引用来构造视图:

[UIStoryboard storyboardWithName:@"storyboardFileThatWasNotAddedToThisTarget" bundle:nil];

通过将新文件添加到辅助目标来修复:

Add Target Membership to secondary Target

通过向Xcode调试器添加异常断点找到问题。

答案 2 :(得分:0)

我使用的是Realm,当我更新Xcode却未更新pod时,崩溃发生了。确保使用以下方法更新您的广告连播

pod repo update
pod update

如果您遇到权限问题,请运行sudo

在领域网站上,

  

领域模型属性必须具有@objc动态var属性才能   成为基础数据库数据的访问者。请注意,如果   该类声明为@objcMembers(Swift 4或更高版本),单个   属性只能声明为动态变量。