2017-09-20 9 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() 

은 엑스 코드 8.3.3 운동장이 실행하지만 간격은 결코 시작하지 않습니다. 내가 뭘 놓치고 있니?

+0

지금은 내 컴퓨터가 아니지만 google "놀이터 무한 실행" – Kevin

+0

@Kevin 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