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

Swift:为什么类方法的返回类型为AnyObject?,swift,initialization,nsdate,return-type,class-method,Swift,Initialization,Nsdate,Return Type,Class Method,NSDate.distantFuture()用于返回类型为NSDate的对象 那么,为什么它的返回类型是AnyObject,而不是NSDate?这实际上被记录为返回AnyObject。 如果事件掩码中指定的事件未在指定日期之前发生,则返回nil。 ** 遥远的未来 创建并返回表示遥远未来日期的NSDate对象 声明 敏捷的 类func distantFuture()->AnyObject 目标-C +(id)遥远的未来 返回值 表示遥远未来日期的NSDate对象(以世纪为单位) 讨论 当需要NS

NSDate.distantFuture()
用于返回类型为
NSDate
的对象


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

这实际上被记录为返回AnyObject。

如果事件掩码中指定的事件未在指定日期之前发生,则返回nil。

**

遥远的未来 创建并返回表示遥远未来日期的NSDate对象

声明 敏捷的 类func distantFuture()->AnyObject 目标-C +(id)遥远的未来 返回值 表示遥远未来日期的NSDate对象(以世纪为单位)

讨论 当需要NSDate对象忽略date参数时,可以传递此值。例如,如果事件掩码中指定的事件未在指定日期之前发生,则NSWindow方法nextEventMachingMask:untelDate:inMode:dequeue:返回nil。您可以使用distantFuture返回的对象作为日期参数,无限期地等待事件发生

myEvent=[myWindow下一个EventMachingMask:myEventMask 截止日期:[NSDate distantFuture] inMode:NSDefaultRunLoopMode 出列:是]; 进口声明 进口基金会

可用性
在OS X v10.0及更高版本中可用。

在Objective-C
distantFuture
中返回一个
id
,而不是
NSDate
。自动快速转换使其成为
任何对象
。当该课程将由苹果公司审核时,他们可能会将其切换到
NSDate


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

我真的怀疑他们是否手动转换了框架,这可能是一种解释。你混淆了返回类型和返回值。不,他不是,这只是文档中的一个转储。如果您查看此文档(预发行版),它被键入为NSDate Haha。好啊谢谢因此,在为自己的自定义类编写工厂方法时,如果我知道每次都会返回特定类型,那么我应该只返回特定类型,例如,
NSDate
,而不是
AnyObject
?对不起,这才是我真正想问的问题。我只是问它关于苹果的代码,因为我通常按照他们的代码建模。