何故、以下のソースでは、タイマーは一回しか実行されないのでしょうか。(fromTimerが一回のみ表示される)
クロージャ内であることが原因だと思うのですが、理由をお教えいただけますでしょうか。
また、通常通り繰り返して実行させる方法はありますでしょうか。
swift
1var timer: Timer! 2 3override func viewDidLoad() { 4 super.viewDidLoad() 5 6 let url = NSURL(string: "https://hoge.com")! 7 let urlSession = URLSession.shared 8 let task = urlSession.dataTask(with: url as URL, completionHandler: { 9 (data, response, error) -> Void in 10 self.timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.fromTimer), userInfo: nil, repeats: true) 11 self.timer.fire() // これがないとfromTimerは一回も呼ばれない 12 }) 13 task.resume() 14} 15 16func fromTimer() { 17 print("fromTimer") 18}
環境は以下です。
iOS10.3.2、Xcode8.3.3、Swift3.1
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/12 11:37