max*_*max 42 cocoa objective-c nsdate ios swift
我跟随Bloc.io Swiftris教程,他们通过以下方式初始化日期:
lastTick = NSDate.date()
Run Code Online (Sandbox Code Playgroud)
这导致编译错误:
'date()' is unavailable: use object construction 'NSDate()'
Run Code Online (Sandbox Code Playgroud)
哪个应该相等:
NSDate *lastTick = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
(来自NSDate参考)
Apple是否将Swift界面更改为NSDate,因为我看过其他使用的示例NSDate.date?
这只是NSDate还是你不能为任何Objective-C API调用类型方法?
ban*_*isa 78
[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]
Run Code Online (Sandbox Code Playgroud)
在Swift中转换为初始化器
NSDate()
Run Code Online (Sandbox Code Playgroud)
这不仅仅是NSDate,你会发现这种模式,但在其他Cocoa API中有工厂方法.
在Objective-C中,[NSDate date]只需调用[[NSDate alloc] init].因此,您不需要调用NSDate.date()Swift.简单地调用NSDate()将使用当前日期初始化日期对象.
Apple将Swift界面改为
NSDate吗?
是的,他们确实.对我来说,编译器告诉:
Foundation.NSDate:3:26:注意:'date()'在这里明确标记为不可用:
@objc(date) class func date() -> Self!
因此,Swift明确标记为不可用.这意味着它已被正式弃用.
| 归档时间: |
|
| 查看次数: |
35971 次 |
| 最近记录: |