gpt4 book ai didi

ios - NSCalendarUnit:NSCalendarUnitNanosecond是否是NSCalendarUnit的有效枚举值?

转载 作者:行者123 更新时间:2023-12-01 19:04:21 25 4
gpt4 key购买 nike

我在一个iOS项目中有一个代码的switch / case部分,该部分检查NSCalendarUnit类型的变量。首先,Xcode 5.0.2发出了有关在switch语句中不包括某些枚举值的警告。因此,我添加了它们的其余部分,但NSCalendarUnitNanosecond除外,该Xcode指示iOS不可用,甚至在显示自动完成选择时在其上放置一条红色删除线。但是,Xcode 5.0.2仍然向我发出警告

开关未处理枚举值'NSCalendarUnitNanosecond'

那么它是否适用于iOS?

(它是Mac OS X的一部分,例如https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_9/Foundation.htm

附带说明一下,有趣的是https://developer.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/NSCalendar_Class/History/History.html#//apple_ref/doc/uid/TP40003626-RH1-SW1上的Apple文档已过时,最近一次更新是在2011年。

最佳答案

在预处理源文件时,可以看到NSCalendarUnit的定义
在iOS上扩展为

enum NSCalendarUnit : NSUInteger {
// ...
NSCalendarUnitNanosecond __attribute__((availability(ios,unavailable))) = (1 << 15),
// ...
}

这意味着 NSCalendarUnitNanosecond在iOS上不可用。

但是,似乎编译器没有正确遵守可用性属性
在检查 switch语句时。

可以使用以下示例轻松重现此内容:
enum MyEnum {
Enum1,
Enum2,
Enum3 UNAVAILABLE_ATTRIBUTE
};

enum MyEnum e = 0;
switch (e) {
case Enum1:
case Enum2:
break;
default:
break;
}

使用以下命令编译时,还会生成“开关未处理的枚举值”警告 -Weverything。这似乎是编译器错误。

当然,您可以使用
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wswitch-enum"

// switch-statement

#pragma clang diagnostic pop

关于ios - NSCalendarUnit:NSCalendarUnitNanosecond是否是NSCalendarUnit的有效枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com