[英]NSDate() vs NSDate.date() in Swift
我跟隨Bloc.io Swiftris教程 ,他們通過以下方式初始化日期:
lastTick = NSDate.date()
這導致編譯錯誤:
'date()' is unavailable: use object construction 'NSDate()'
哪個應該相等:
NSDate *lastTick = [NSDate date];
(來自NSDate參考 )
Apple是否將Swift接口更改為NSDate ,因為我看過其他使用NSDate.date
示例?
這只是NSDate還是你不能為任何Objective-C API調用類型方法?
[NSDate date]
是用於構造NSDate對象的工廠方法。
如果您閱讀“使用Swift with Cocoa和Objective-C”指南,則有一節與Objective-C apis進行交互:
為了一致性和簡單性,Objective-C工廠方法在Swift中被映射為便捷初始化器。 這種映射允許它們使用與初始化器相同的簡潔,清晰的語法。“
摘錄自:Apple Inc.“將Swift與Cocoa和Objective-C結合使用。”iBooks。 https://itun.es/gb/1u3-0.l
所以工廠方法:
[NSDate date]
在Swift中轉換為初始化器
NSDate()
這不僅僅是NSDate,你會發現這種模式,但在其他Cocoa API中有工廠方法。
似乎NSDate()
是新語法。 以前, NSDate.date()
工作,
但現在你應該使用 NSDate()
在Objective-C中, [NSDate date]
只調用[[NSDate alloc] init]
。 因此,您不需要在Swift中調用NSDate.date()
。 只需調用NSDate()
就會使用當前日期初始化日期對象。
Apple是否將Swift界面更改為
NSDate
?
是的,他們確實。 對我來說,編譯器告訴:
Foundation.NSDate:3:26:注意:'date()'在這里明確標記為不可用:
@objc(date) class func date() -> Self!
因此,Swift明確標記為不可用。 這意味着它已被正式棄用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.