一个特定的警告我有一个雨燕功能做这样的事情:如何抑制斯威夫特
func f() -> Int {
switch (__WORDSIZE) {
case 32: return 1
case 64: return 2
default: return 0
}
}
因为__WORDSIZE
是一个常数,编译器总是给人在开关本体的至少一个警告。实际标记的线取决于我正在构建的目标(例如,iPhone 5与6;有趣的是,iPhone 5给出了64位情况的警告,而iPhone 6给出了32位和默认的两个警告)。
我发现雨燕等效#pragma
为// 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
- 但当然这是不一样的。任何提示......?
目前,您无法在Swift代码中抑制特定警告(请参阅http://stackoverflow.com/questions/31540446/how-to-silence-a-warning-in-swift-2-0)。作为一种解决方法,你可以改用'sizeof(Int.self)'(4或8)。 - 知道*为什么你需要这个功能会很有趣。 –
谢谢,您的解决方案有效。对于代码,请参阅此处:http://stackoverflow.com/questions/24007129/how-does-one-generate-a-random-number-in-apples-swift-language - 通过jstn回答。 – Stefan
我以前没见过,但这里http://stackoverflow.com/a/31429991/1187415是一个(非常相似)的解决方案,它不需要在字大小上的开关。 –