Swift:为什么类方法有返回类型AnyObject?

时间:2014-11-11 21:31:11

标签: swift initialization nsdate return-type class-method

记录

NSDate.distantFuture()以返回NSDate类型的对象。

那么,为什么它的返回类型为AnyObject,而不是NSDate

2 个答案:

答案 0 :(得分:7)

在Objective-C distantFuture中返回id,而不是NSDate。自动Swift转换使其成为AnyObject。当Apple将对课程进行审核时,他们可能会将其更改为NSDate

NSDate的distantFuture实际上来自遥远的过去(至少在Mac OS X 10.0之前,甚至可能在此之前)。此时,许多工厂方法返回id,因为没有instancetype。只是为了更容易在返回的对象上调用子类方法。

答案 1 :(得分:-1)

这实际上记录为返回AnyObject。

如果事件掩码中指定的事件未在指定日期之前发生,

将返回nil。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/#//apple_ref/occ/clm/NSDate/distantFuture **

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及更高版本。