什么iOS版本支持NSTimer有效属性?

时间:2015-05-28 11:55:47

标签: ios nstimer

我注意到了最奇怪的事情。我正在玩NSTimer,在浏览Apple documentation时,我已经到达valid属性here,并注意到此属性自iOS 8开始可用。这个事实由它拥有并不奇怪,但事实上4至6年前有关NSTimer的大量stackoverflow帖子指的是这个属性或建议使用它让我感到困惑:Example 1example 2,{{ 3}}和其他许多人。

所以我的问题分为2:

  • 哪些iOS版本真正支持NSTimer valid属性?
  • 如果我的目标是iOS 7及更高版本,使用此属性是否安全?

提前致谢。

3 个答案:

答案 0 :(得分:3)

Apple文档已经针对Swift进行了更新,这就是为什么它有Available in iOS 8.0 and later的一些属性和方法,而它们肯定是以前的iOS版本。例如,在iOS 2.0中引入了NSTimer。你可以安全地使用它。

答案 1 :(得分:2)

每个人都错过了真实的故事。查看NSTimer(以及许多其他类)的iOS 8.0 API差异。

Apple做了一个巨大的重构,将许多API转换为使用属性而不是显式的setter / getter方法。

在iOS 8.0之前,NSTimer有一个名为isValid的方法。在iOS 8.0中,Apple删除了此方法并添加了只读属性valid(使用getter方法名称isValid声明。

由于iOS 8.0中的这种变化(以及许多喜欢它),文档会使许多API看起来好像刚刚添加到iOS 8.0中,即使它们可能已经存在了很长时间。

最终结果是文档现在对许多属性都非常误导。提交文档错误不太可能发生任何事情,因为此问题适用于数十个类和数百个属性/方法。

答案 2 :(得分:1)

我转到了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,可能是苹果文档有一些错误

我也提供了反馈来纠正它。

enter image description here