@available(OSX, introduced=10.4, deprecated=10.10, message="Use NSCalendarUnitSecond instead")
public static var NSSecondCalendarUnit: NSCalendarUnit { get }
"改为使用NSCalendarUnitSecond" 应该 "使用NSCalendarUnit.Second代替"?
答案 0 :(得分:0)
Swift定义和可用性语句是从Foundation头文件" NSCalendar.h"中的C定义合成的:
typedef NS_OPTIONS(NSUInteger, NSCalendarUnit) {
// ...
NSCalendarUnitSecond = kCFCalendarUnitSecond,
// ...
NSSecondCalendarUnit NS_CALENDAR_ENUM_DEPRECATED(10_4, 10_10, 2_0, 8_0, "Use NSCalendarUnitSecond instead") = NSCalendarUnitSecond,
// ...
}
,结果是
public struct NSCalendarUnit : OptionSetType {
// ...
public static var Second: NSCalendarUnit { get }
// ...
@available(OSX, introduced=10.4, deprecated=10.10, message="Use NSCalendarUnitSecond instead")
public static var NSSecondCalendarUnit: NSCalendarUnit { get }
// ...
}
弃用消息只是一个字符串
"Use NSCalendarUnitSecond instead"
并且Swift编译器不是那么聪明,它可以替代
NSCalendarUnitSecond
由相应的Swift定义
该邮件中的NSCalendarUnit.Second
。所以从
Swift认为,这条消息具有误导性。
但你是对的,在Swift中你必须使用NSCalendarUnit.Second
,
如果可以从中推断出枚举类型,则只需.Second
背景。