我有一个Swift函数,做类似于这样的事情:
因为
我发现
- 当然这不一样。有任何提示吗…?
func f() -> Int {
switch (__WORDSIZE) {
case 32: return 1
case 64: return 2
default: return 0
}
}
因为
__WORDSIZE
是一个常量,编译器总是至少在switch体中给出一个警告。实际标记哪些行取决于我正在构建的目标(例如iPhone 5与6;有趣的是,iPhone 5对64位情况给出一个警告,而iPhone 6对32位和默认情况分别给出两个警告)。我发现
#pragma
的Swift等效项是// MARK:
,所以我尝试了一下。// MARK: clang diagnostic push
// MARK: clang diagnostic ignored "-Wall"
func f() -> Int {
switch (__WORDSIZE) {
case 32: return 1
case 64: return 2
default: return 0
}
}
// MARK: clang diagnostic pop
但警告仍然存在,MARK
似乎没有作用。
为了解决这个问题,我现在有类似于以下的东西:
#if arch(arm) || arch(i386)
return 1
#else
#if arch(arm64) || arch(x86_64)
return 2
#else
return 0
#endif
#endif
- 当然这不一样。有任何提示吗…?
switch nil ?? x
可以消除 "Switch condition evaluates to a constant" 警告。该警告很烦人,因为每次构建时都会聚焦问题导航器选项卡。 - danneu