发布于 2015-05-28 14:58:44
每个人都错过了真实的故事。看看iOS 8.0APIDiffersforNSTimer
(和许多其他类)。
Apple做了一个巨大的重构,将许多API转换成使用属性,而不是显式的setter/getter方法。
在iOS 8.0之前,NSTimer
有一个名为isValid
的方法。在iOS 8.0中,苹果删除了这个方法,并添加了只读属性valid
(声明为getter方法名isValid
)。
由于iOS 8.0中的这一更改(以及许多类似的变化),文档使得许多API看起来就好像它们只是在iOS 8.0中添加的一样,尽管它们可能已经存在了很长时间。
最终的结果是文档现在对许多属性非常误导。提交文档错误不太可能做任何事情,因为这个问题适用于数十个类和数百个属性/方法。
发布于 2015-05-28 11:59:22
苹果的文档更新了Swift,这就是为什么它为一些属性和方法提供了Available in iOS 8.0 and later
,而这些属性和方法在以前的iOS版本中就已经存在了。例如,NSTimer
是在iOS 2.0中引入的。你可以安全地使用它。
发布于 2015-05-28 12:46:28
我找到了NSTimer.h
文件
@property NSTimeInterval tolerance NS_AVAILABLE(10_9, 7_0);
- (void)invalidate;
@property (readonly, getter=isValid) BOOL valid;
@property (readonly, retain) id userInfo;
@end
看不到NS_AVAILABLE
前面的valid
属性,可能是苹果文档有一些错误
我也给出了反馈,以纠正它。
https://stackoverflow.com/questions/30505924
复制相似问题