什么iOS版本支持NSTimer有效属性?
我注意到了最奇怪的事情。我在玩Ntimer,在浏览时,我找到了什么iOS版本支持NSTimer有效属性?,ios,nstimer,Ios,Nstimer,我注意到了最奇怪的事情。我在玩Ntimer,在浏览时,我找到了valid属性,并注意到该属性从iOS 8开始就可用。这一事实本身并不奇怪,但4-6年前关于NSTimer的大量stackoverflow帖子都提到了这个属性或建议使用它,这一事实让我感到困惑:,以及其他许多问题 因此,我的问题分为两部分: 哪些iOS版本真正支持NSTimervalidproperty 如果我的目标是iOS 7及以上版本,使用此属性安全吗 提前感谢。苹果的文档已经为Swift进行了更新,这就是为什么它在iOS 8
valid
属性,并注意到该属性从iOS 8开始就可用。这一事实本身并不奇怪,但4-6年前关于NSTimer的大量stackoverflow帖子都提到了这个属性或建议使用它,这一事实让我感到困惑:,以及其他许多问题
因此,我的问题分为两部分:
- 哪些iOS版本真正支持NSTimer
propertyvalid
- 如果我的目标是iOS 7及以上版本,使用此属性安全吗
提前感谢。苹果的文档已经为Swift进行了更新,这就是为什么它在iOS 8.0和更高版本中提供了一些属性和方法的
,而这些属性和方法从以前的iOS版本开始就已经存在了。例如,iOS 2.0中引入了NSTimer
。您可以安全地使用它。我转到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
无法看到valid
属性前面的可用NS\u
,可能是apple docs有一些错误
我也给出了反馈来纠正它
每个人都错过了真实的故事。查看iOS 8.0 API差异,了解NSTimer
(以及许多其他类)
苹果做了一次巨大的重构,将许多API转换为使用属性,而不是显式的setter/getter方法
在iOS 8.0之前,NSTimer
有一个名为isValid
的方法。在iOS 8.0中,苹果删除了这个方法,并添加了只读属性valid
(用getter方法名isValid
声明)
由于iOS 8.0中的这一变化(以及许多类似变化),这些文档使得许多API看起来就像是在iOS 8.0中添加的,尽管它们可能已经存在了更长的时间
最终的结果是,文档现在对许多属性都具有误导性。提交文档错误不太可能有任何作用,因为这个问题适用于大量的类和数百个属性/方法。我在针对ios 7及以上版本的应用程序中使用此NSTimer
及其有效的属性如果我没有弄错,并且能够正确地记得我已经在iOS4中使用过它,那么它工作得很好;我觉得自从NSTimer
引入以来,它就一直可用。我猜它当前的可用性是苹果网站上新文档中的一个输入错误。因此,在这种情况下,这是苹果文档中的一个错误。我应该报告吗?如果是,如何报告?:)哦,伙计,你会经常在文档中找到它。。。我宁愿注意那些不推荐的。这个答案是不正确的。这与正在为Swift更新的文档无关。这与苹果所做的巨大重构有关,它用属性替换了许多以前的setter/getter方法。请看我的答案。事实上,在许多类和数百个属性/方法中都存在类似这样的问题,这不应该成为放弃它而不提交文档错误的理由。我已经报告了一个关于它的问题,希望很多人会关注类似的问题,所以最终文档将尽可能准确。谢谢你的解释:)FWIW这房子是给Swift的。对于objective-c,只有属性。两个都读了-only@Honey在Objective-C中,定义了valid
属性,因此getter方法被称为isValid
,正如我在回答中所述,正如参考文档中所示。我不明白。你在说哪个医生?请参阅我看不到是否有效
。我只看到valid
@Honey@property(readonly,getter=isValid)BOOL-valid代码>。从…起