NSCalendarUnit。 NSSecondCalendarUnit弃用邮件错误?

时间:2016-01-04 21:10:38

标签: swift

@available(OSX, introduced=10.4, deprecated=10.10, message="Use NSCalendarUnitSecond instead")
public static var NSSecondCalendarUnit: NSCalendarUnit { get }

"改为使用NSCalendarUnitSecond" 应该 "使用NSCalendarUnit.Second代替"?

1 个答案:

答案 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 背景。