2016-10-26 43 views
1

我很困惑!当我初始化NSTimer() Xcode告诉我它已被重命名为Timer(),如果我初始化Timer() Xcode告诉我它只适用于iOS 10.0或更高版本。如果我想为早期版本的iOS使用计时器,我应该怎么使用?对我来说最奇怪的是,没有人似乎有这个问题,所以我在这里错过了什么?我究竟做错了什么?适用于早期版本iOS 10的计时器? (Xcode 8,Swift 3)

UPDATE: 好吧,即使我已经得到了downvoted一堆的时间,因为人们误解了我的问题(像往常一样),我还是要尝试澄清我的处境了。是的,我知道NSTimer()在Swift 3中被重命名为Timer(),这实际上是我在第一句中引用Xcode的警告信息的原因,所以我不知道为什么每个人都觉得'纠正'我的冲动。其次,事实证明只剩下一种类型的方法,我可以用于iOS 10之前的设备,即Timer(timeInterval: <#T##TimeInterval#>, target: <#T##Any#>, selector: <#T##Selector#>, userInfo: <#T##Any?#>, repeats: <#T##Bool#>)。其他可用的4类方法都弹出一个警告,这只是在iOS的10个可用,你可以在这里看到: Screenshot of Xcode warning

而且,没有课的方法scheduledTimer()可用,即使我不记得它曾经是他们在Swift 2.2中。没有任何类方法可用于timer对象,这意味着上述唯一可用的类型方法是我拥有的唯一选项。

+0

如果您尝试在iOS 9或更低版本下运行您的应用程序,则该代码会崩溃。 – rmaddy

+0

@rmaddy呃...你回答什么问题? –

+0

你的。你的应用支持iOS 9,对吗?但是您试图使用仅限iOS 10的API。这就是Xcode抱怨的原因。如果您尝试在没有适当保护的情况下在您的应用中使用仅适用于iOS 10的API,那么当您在iOS 9下运行时,您的应用会崩溃。 – rmaddy

回答

2

定时器的NSTimer。这是不是新的iOS中10

如果我初始化定时器()

你应该从未Timer()初始化定时器。您必须调用类方法scheduledTimer(timeInterval:target:selector:userInfo:repeats:)

什么在iOS 10中新增的是类方法scheduledTimer(withTimeInterval:repeats:block:)。你不能在iOS 9之前和之前调用它。但你不必这样做。只需在iOS 9和iOS 10中拨打scheduledTimer(timeInterval:target:selector:userInfo:repeats:),一切都会好起来的。

+0

我尝试了一切,没有任何类方法。有5种类型的方法,其中只有一种与早期版本的iOS 10兼容。请参阅我更新的帖子以获取更多信息。 –

+0

“没有任何类方法”小提琴 - 时尚。看看这个:https://developer.apple.com/reference/foundation/timer/1412416-scheduledtimer注意什么?类方法('class func')。这就是我所说的。这在iOS 10中并不是什么新东西,它应该是你应该调用的。这就是我的回答所说的。这里有什么问题? – matt

+0

这是一种类型的方法,我指的是一个实例方法,我用一个“类方法”来混淆(就像你所说的那样)。从我对你的答案的第一个评论中,你可能已经注意到我把类方法和类型方法误认为是两个不同的东西。我的意思是说它没有任何实例方法。 –

1

我认为你有点不对,Timer()是Swift 3.0的新语法,不适用于任何iOS版本。 Swift 3.0适用于iOS 8,9,10。虽然NSTimer用于Swift 2.2及更低版本。所以确保你的部署目标是8,9或10,你会没事的。

+0

我明白这一点。但这不是我的问题。我更新了我的帖子,所以也许我的问题现在更有意义了。 –

相关问题