NSDate.distantFuture()
以返回NSDate
类型的对象。
那么,为什么它的返回类型为AnyObject
,而不是NSDate
?
答案 0 :(得分:7)
在Objective-C distantFuture
中返回id
,而不是NSDate
。自动Swift转换使其成为AnyObject
。当Apple将对课程进行审核时,他们可能会将其更改为NSDate
。
NSDate的distantFuture
实际上来自遥远的过去(至少在Mac OS X 10.0之前,甚至可能在此之前)。此时,许多工厂方法返回id
,因为没有instancetype
。只是为了更容易在返回的对象上调用子类方法。
答案 1 :(得分:-1)
这实际上记录为返回AnyObject。
如果事件掩码中指定的事件未在指定日期之前发生,将返回nil。
distantFuture 创建并返回表示遥远未来日期的NSDate对象。
宣言 迅速 class func distantFuture() - > AnyObject Objective-C的 +(id)distantFuture 回报价值 一个NSDate对象,表示遥远未来的日期(以几个世纪为单位)。
讨论 当需要NSDate对象使date参数基本上被忽略时,您可以传递此值。例如,NSWindow方法nextEventMatchingMask:untilDate:inMode:dequeue:如果事件掩码中指定的事件未在指定日期之前发生,则返回nil。您可以使用remoteFuture返回的对象作为日期参数,以无限期地等待事件发生。
myEvent = [myWindow nextEventMatchingMask:myEventMask 直到日期:[NSDate distantFuture] inMode:NSDefaultRunLoopMode 出队:YES]; 进口声明 进口基金会
状况 适用于OS X v10.0及更高版本。