2種類のタイマーイベントをクラスメソッドで呼び出す「DCTimer」クラスを作成しました。userInfo経由でパラメータを渡す事も可能です。
下記よりサンプルとソースコードのダウンロードが行えます。
ダウンロード
使用方法
一定間隔で実行するタイマーイベント呼び出し
1
2
//1秒間隔で timerEventメソッドを呼び出し
[ DCTimer setTimer: 1.0f delegate: self selector: @selector ( timerEvent: ) userInfo: nil ];
指定した時間後に実行するタイマーイベント呼び出し
1
2
//2秒後に delayTimerEventメソッドを呼び出し
[ DCTimer setDelayTimer: 2.0f delegate: self selector: @selector ( delayTimerEvent: ) userInfo: nil ];
サンプルソースコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- ( void ) viewDidLoad
{
[ super viewDidLoad ];
//ラベル初期化
self . timerLabel . text = NULL ;
self . delayTimerLabel . text = NULL ;
//タイマー呼び出し
NSDictionary * timerUserInfo = [ NSDictionary dictionaryWithObject: @"called telayTimer method" forKey: @"message" ];
[ DCTimer setTimer: 1.0f
delegate: self
selector: @selector ( timerEvent: )
userInfo: timerUserInfo ];
//遅延実行タイマー呼び出し
NSDictionary * delayTimerUserInfo = [ NSDictionary dictionaryWithObject: @"called setDelayTimer method" forKey: @"message" ];
[ DCTimer setDelayTimer: 2.0f
delegate: self
selector: @selector ( delayTimerEvent: )
userInfo: delayTimerUserInfo ];
}
//一定間隔に実行されるタイマーイベント
- ( void ) timerEvent: ( NSTimer * ) timer
{
_timerCount ++ ;
NSString * message = [( NSDictionary * ) timer . userInfo objectForKey: @"message" ];
self . timerLabel . text = [ NSString stringWithFormat: @"%@: %d" , message , _timerCount ];
}
//一定時間後に実行されるタイマーイベント
- ( void ) delayTimerEvent: ( NSTimer * ) timer
{
NSString * message = [( NSDictionary * ) timer . userInfo objectForKey: @"message" ];
self . delayTimerLabel . text = message ;
}
//タイマーの停止
- ( IBAction ) stopTimer: ( id ) sender
{
[[ DCTimer timer ] invalidate ];
}
ソースコード
DCTimer.h
1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>
@interface DCTimer : NSTimer
#pragma mark - public method
+ ( void ) setTimer: ( CGFloat ) timeInterval delegate: ( id ) delegate selector: ( SEL ) selector userInfo: ( NSDictionary * ) userInfo ;
+ ( void ) clearTimer ;
+ ( void ) setDelayTimer: ( CGFloat ) timeInterval delegate: ( id ) delegate selector: ( SEL ) selector userInfo: ( NSDictionary * ) userInfo ;
+ ( NSTimer * ) timer ;
@end
DCTimer.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#import "DCTimer.h"
@implementation DCTimer
static NSTimer * timer ;
// タイマー定義
+ ( void ) setTimer: ( CGFloat ) timeInterval delegate: ( id ) delegate selector: ( SEL ) selector userInfo: ( NSDictionary * ) userInfo
{
timer = [ NSTimer scheduledTimerWithTimeInterval: timeInterval
target: delegate selector: selector userInfo: userInfo
repeats: YES ];
}
// タイマー削除
+ ( void ) clearTimer
{
if ( timer != nil ) {
[ timer invalidate ];
}
}
// 遅延実行タイマー定義
+ ( void ) setDelayTimer: ( CGFloat ) timeInterval delegate: ( id ) delegate selector: ( SEL ) selector userInfo: ( NSDictionary * ) userInfo
{
[ NSTimer scheduledTimerWithTimeInterval: timeInterval
target: delegate selector: selector userInfo: userInfo
repeats: NO ];
}
// タイマー取得
+ ( NSTimer * ) timer
{
return timer ;
}
@end
お薦めの参考書
Swiftではじめる iPhoneアプリ開発の教科書 Swift 2 & Xcode 7対応
この参考書の通りに実践サンプルを作成することで、確実に力を養うことができます。サンプルコードもサイトからダウンロード出来るようになっており、特に広告の貼り方などが参考になりました。Swiftで何が出来るかを知ることができ、入門用にお薦めの1冊です。