Sha*_*yrs 10 objective-c nsdate
为什么不回来NSDate*?
它应该是一个创造功能吗?所有创建函数都返回类型为创建它的类的类.
现在,我做不到NSDate.date.timeIntervalSince1970:(
我认为编译器足够聪明,知道NSDate.date返回NSDate,即使返回类型是id?
Gab*_*lla 11
从iOS的7起,苹果采用instancetype的返回类型最基础框架的API(和其他框架也是如此),所以现在的实例+date中NSDate具有以下特征:
+ (instancetype)date
Run Code Online (Sandbox Code Playgroud)
返回构造函数和工厂方法id,以允许子类在不使用ovverriding的情况下使用它们.
想象一下,你有一个NSDate被调用的子类NSMutableDate.
如果你打电话
[NSMutableDate date]
Run Code Online (Sandbox Code Playgroud)
现在你希望有一个NSMutableDate *对象返回,但如果date返回,NSDate *你需要覆盖改变返回类型的方法.
使用id允许这种灵活性.
实际上instancetype,如果你定义自己的工厂方法,clang编译器有一个派上用场的关键字.我最近在这里讨论了这个具体问题.
类工厂的方法(如[NSMutableDate date],[NSMutableArray array]等)内部使用alloc/ init,并返回的任何init返回.
init并且它的兄弟姐妹(initWith...)总是返回一个id,并且通过扩展,类工厂方法也是如此.
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |