NSDate()vs Swift中的NSDate.date()
我跟着Bloc.io Swiftris教程 ,他们在这里初始化一个date:
lastTick = NSDate.date() 这导致编译错误:
 'date()' is unavailable: use object construction 'NSDate()' 
这应该等于:
 NSDate *lastTick = [NSDate date]; 
(来自NSDate参考 )
 苹果是否将Swift接口更改为NSDate ,因为我已经看到了使用NSDate.date其他示例? 
这只是NSDate,或者你不能调用任何Objective-C API的types方法吗?
  [NSDate date]是一个构造NSDate对象的工厂方法。 
如果您阅读“使用Cocoa和Objective-C使用Swift”指南,那么有一部分与Objective-C API进行交互:
为了一致性和简单性,Objective-C工厂方法被映射为Swift中的便捷初始值设定项。 这种映射使得它们可以像初始化一样使用简洁明了的语法。“
摘自:苹果公司“使用cocoa和Objective-C的Swift”iBooks。 https://itun.es/gb/1u3-0.l
所以工厂方法:
 [NSDate date] 
在Swift中被转换成一个初始化器
 NSDate() 
这不只是NSDate,你会发现这种模式,但在其他cocoaAPI的工厂方法。
 看来, NSDate()是新的语法。 以前, NSDate.date()工作, 
 但现在你应该使用 NSDate() 
 在Objective-C中, [NSDate date]只需调用[[NSDate alloc] init] 。 因此,你不需要在Swift中调用NSDate.date() 。 简单地调用NSDate()将初始化一个date对象与当前date。 
苹果是否改变了
NSDate的Swift接口?
是的,他们做了。 对我来说,编译器告诉:
Foundation.NSDate:3:26:注意:'date()'在这里被明确标记为不可用:
@objc(date) class func date() -> Self!
所以它被明确标记为不可用Swift。 这意味着它已被正式弃用。