我的 Xcode-iOS-Swift 项目中有一个 C 库,一切都按预期工作,除了这个断言失败只发生在 Xcode iPhone 模拟器而不是物理 iPhone 上。
这里的第一行断言失败:
if (ALWAYS(*out)) {
return E_SUCCESS;
} else {
return E_FAILED;
}
#if defined(H3_OMIT_AUXILIARY_SAFETY_CHECKS)
#define ALWAYS(X) (1)
#define NEVER(X) (0)
#elif !defined(NDEBUG)
#define ALWAYS(X) ((X) ? 1 : (assert(0), 0)) <-- culprit
#define NEVER(X) ((X) ? (assert(0), 1) : 0)
#else
#define ALWAYS(X) (X)
#define NEVER(X) (X)
#endif
*out
是一个 64 位整数,当此断言失败时它不是 null
。为什么这只会发生在模拟器上?