2015-10-11 67 views
-1

我正在使用Swift 1和Xcode 6進行遊戲,並且所有的工作都很完美。但是當我更新到XCode 7和Swift 2時,我遇到了一個奇怪的問題。在我的遊戲中,我有一些NSTimers保存在變量中以產生敵人。這個變量之一的一個例子是這樣的:Swift 2中的初始化問題

var firstTimer = NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true) 

當我更新,這種類型的(我有過4)的每一個變量有,說一個問題:firstTimer「變量初始化‘’從來沒有使用;考慮替換爲「_」或將其除去

我不能只是將每個變量的名稱都改爲」_「,而且我從不必初始化它。 發生了什麼事?爲什麼這沒有發生過?

btw:我在代碼中使用了這個變量。

+0

如果您沒有參考它,您如何使您的計時器無效?這是潛在的內存泄漏。 – Abizern

回答

3

錯誤說明了這一切,你根本沒有在你的代碼中使用這個值。如果你打算永遠不會停止計時,你可以省略變量的聲明是這樣的:

NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true) 

但是,如果以後要停止你應該保存它:

class MyViewController { 
    var timer : NSTimer? 

    func startTimer() { 
     timer = NSTimer.scheduledTimerWithTimeInterval(actualTime, target: self, selector: Selector("SpawnEnemy"), userInfo: nil, repeats: true) 
    } 

    func stopTimer() { 
     timer?.invalidate() 
    } 
} 

什麼你可以這樣做:

  • var timer = ...讓你沒有使用值(如果你沒有)警告,警告說timer從來沒有改變過,應該是一個let
  • let timer = ...讓你沒有使用值警告(如果你沒有)
  • let _ = ...一樣_ = ...評估右側和丟棄結果。沒有警告
  • 只是...和最後一個一樣,但是當結果不被使用時可以給@warn_unused_result屬性提供一個警告。
+0

1)我在代碼中使用它 – Gabe12

+0

2)爲什麼這種情況在 – Gabe12

+2

@ Gabe12之前沒有發生過(1)你從未在代碼中引用變量firstTimer ......如果你這樣做,警告不會出現(2 ),因爲這是一個新的警告 –