私は初心者ですIOS開発者ですが、Android開発の経験が豊富です。私の質問は、間隔固有のタイマーの作成と使用に関するものです。
Android私は簡単に次のようなタイマーを作ることができます:
timedTimer = new Timer();
timedTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
TimedMethod();
}
}, 0, 1000);
ここで、間隔は1000 MSであり、メソッドTimedMethod()がティックごとに呼び出されます。 IOSで同様の機能を実装するにはどうすればよいですか?
読んでくれてありがとう!どんな助けでも素晴らしいでしょう! :-)
次のように繰り返し NSTimer
を使用できます。
- (void) startTimer {
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(tick:)
userInfo:nil
repeats:YES];
}
- (void) tick:(NSTimer *) timer {
//do something here..
}
使用する
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
上記のメソッドを呼び出したのと同じクラスで、timerCallback
というメソッドを作成します。これは、タイマーが起動するたびに呼び出されます。 1000ミリ秒ごと。
Swiftの場合:
10秒ごとにuploadメソッドを呼び出す以下の行を使用してタイマーオブジェクトを作成します。 がmethodSignatureForSelectorを実装していない場合は、NSObjectを使用してクラスを拡張します。詳細についてはこれを読んでください クラスYのオブジェクトXはSwiftのmethodSignatureForSelectorを実装していません
timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "upload", userInfo: nil, repeats: true)
func upload() {
print("hi")
}
FoundationFrameworkのNSTimer.hファイルにある以下のメソッドを使用します
構文:
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
使用法 :
#define kSyncTimerLength 4 //Declare globally
-(void) timerActivityFunction; //Declare in interface
[NSTimer scheduledTimerWithTimeInterval:kSyncTimerLength target:self
selector:@selector(timerActivityFunction) userInfo:nil repeats:NO];
-(void) timerActivityFunction {
// perform timer task over-here
}