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
?对不起,这才是我真正想问的问题。我只是问它关于苹果的代码,因为我通常按照他们的代码建模。