2016-10-26 44 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

我明白這一點。但這不是我的問題。我更新了我的帖子,所以也許我的問題現在更有意義了。 –

相關問題