2017-09-20 16 views
0

は、このコードを考えてみましょ発射ません: タイマー間隔

import Foundation 
import PlaygroundSupport 

class Test 
{ 
    var interval:Timer? 
    var counter = 0 

    func start() 
    { 
     print("Starting ...") 
     interval = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) 
     { 
      timer in 
      self.counter += 1 
      print(self.counter) 
      if (self.counter < 10) { return } 

      self.interval?.invalidate() 
      self.interval = nil 
      print("Done!") 
      PlaygroundPage.current.finishExecution() 
     } 
     interval?.fire() 
    } 
} 


PlaygroundPage.current.needsIndefiniteExecution = true 
var test = Test() 
test.start() 

は、Xcodeの8.3.3遊び場でこれを実行しているが、間隔が決して開始しません。私は何が欠けているのですか?

+0

私は現在私のコンピュータにはいませんが、googleの "playground indefinite execution" – Kevin

+0

@ケビン私は私の例をhttps://stackoverflow.com/questions/24058336/how-do-i-run-asynchronousとして更新しました。 -callbacks-in-playground#24066317プレイグランドではありますが、まだ発砲していません。 – BadmintonCat

+0

コードをコピーして貼り付けるとうまく動作します。 – Kevin

答えて

1

簡単な答えはあなたの遊び場にこれを追加することです:

import PlaygroundSupport 
PlaygroundPage.current.needsIndefiniteExecution = true 

遊び場は、すべてのコードを実行してから停止し、デフォルトでは、遊び場を使用して、それがタイマーを待つことを知りません。このコードは、何か起こるのを待っていることをプレイグラウンドに伝えるだけです。

+0

まだ動作しません。上記のコメントを参照してください。 – BadmintonCat

+0

それは私のためにも機能します!昨日からiOSシミュレータがバックグラウンドで実行されていて、それをやめてXcodeを再起動するのはやりました。 – BadmintonCat

関連する問題