Swift NSTimerの使い方のポイント
scheduledTimerWithTimeInterval(ti: NSTimeInterval, target: AnyObject, selector: Selector, userInfo: AnyObject?, repeats: Bool)
ポイント
- target
- 指定するオブジェクトは、NSObjectを継承しているか、@objcのついたクラスである必要がある
- selector
- Selector("onUpdate:")でもよいし、"onUpdate:"でもよい
- コロンは省略不可(引数が一つあることを表す)
- メソッド名はなんでも良い
- 引数はtimer: NSTimerでなければならない
- 戻り値は自由
- Selector("onUpdate:")でもよいし、"onUpdate:"でもよい
サンプルコード1
class AnswerTimer: NSObject { init() { super.init() NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("onUpdate:"), userInfo: nil, repeats: true) } func onUpdate(timer: NSTimer) { } }
スポンサーリンク
サンプルコード2
@objc class AnswerTimer { init() { NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("onUpdate:"), userInfo: nil, repeats: true) } func onUpdate(timer: NSTimer) { } }
エラーメッセージ
上記のポイントが満たされていないと下記のようなエラーが出る
2014-11-23 10:13:12.623 MyApp[7959:894999] *** NSForwarding: warning: object 0x78e5d4f0 of class 'MyApp.AnswerTimer' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector -[MyApp.AnswerTimer onUpdate:]
スポンサーリンク