4

Android アプリを iPhone に移植しようとしています。Android では、timer クラスと timerTasks を使用して、scheduleAtFixedRate: timer.scheduleAtFixedRate(task,15000, epochLengthMs);を使用して、60 秒ごとにデータを簡単に処理できます。

ありがとうございました!

iPhoneで使用できる同様のものはありますか?

protected void startTimer(){

    if(timerStarted){
        //avoid duplicate timers! 
    }else{

        running = true;
        timerStarted = true;

        if(D)Log.w(TAG,"*Timer Started*");
        timer = new Timer();
        readyToProcess = true;
        EpochCounterTask task = new EpochCounterTask();
        AutoSaveTask saveTask = new AutoSaveTask();

        //give statMagnitude enough time to get values
        //after 15 sec, every 60 sec
        timer.scheduleAtFixedRate(task,15000, epochLengthMs);
        timer.scheduleAtFixedRate(saveTask,645000, 600000);

        }

}
4

3 に答える 3

3

エポック カウンター用と自動保存タスク用の 2 つの NSTimer を作成する必要があります。このようなもの:

- (void)startTimer {

if(timerStarted){
    //avoid duplicate timers! 
}else{

    running = true;
    timerStarted = true;

    readyToProcess = true;

    epochTimer = [[NSTimer scheduledTimerWithTimeInterval:epochSeconds 
                                        target:self
                                        selector:@selector(processEpochTimer:)
                                        userInfo:nil
                                        repeats:YES] retain];

    autosaveTimer = [[NSTimer scheduledTimerWithTimeInterval:autosaveSeconds 
                                        target:self
                                        selector:@selector(processAutosaveTimer:)
                                        userInfo:nil
                                        repeats:YES] retain];
    }
}

また、タイマーが起動したときに呼び出される次のハンドラー メソッドを定義する必要があります。

- (void)processEpochTimer:(NSTimer*)theTimer;
- (void)processAutosaveTimer:(NSTimer*)theTimer;
于 2011-09-27T16:41:55.243 に答える
2

http://www.iphoneexamples.com/ タイマーをご覧ください

タイマー このタイマーは、1 秒ごとに myMethod を呼び出します。

[NSTimer scheduledTimerWithTimeInterval:1 
    target:self 
    selector:@selector(myMethod:) 
    userInfo:nil 
    repeats:YES];

オブジェクトを myMethod に渡す必要がある場合はどうすればよいでしょうか? 「userInfo」プロパティを使用します。1.最初にタイマーを作成します

[NSTimer scheduledTimerWithTimeInterval:1 
    target:self 
    selector:@selector(myMethod:) //don't forget the ":"
    userInfo:myObject 
    repeats:YES];
  1. 次に、NSTimer オブジェクトをメソッドに渡します。

    -(void) myMethod:(NSTimer*)timer // myObject のすべてのプロパティとメソッドにアクセスできるようになりました [[timer userInfo] myObjectMethod];

タイマーを停止するには、「invalidate」を使用します。

[myTimer invalidate];
myTimer = nil; // ensures we never invalidate an already invalid Timer
于 2011-09-27T17:17:10.943 に答える
2

NSTimerを見てください

于 2011-09-27T16:28:22.447 に答える