1

メインスレッドではなく、scheduledTimerWithTimeIntervalをアクティブにしようとしています。これは私のコードです。

-(void)setMidnightUpdate{

   dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 
                                            0), ^{

        if(midnightTimer && [midnightTimer isValid]) {
            [midnightTimer invalidate];
            midnightTimer = nil;
        } 

secs = 10;
midnightTimer = [NSTimer scheduledTimerWithTimeInterval:secs 
                                                 target:self 
                                               selector:@selector(midnightUpdate) 
                                               userInfo:nil 
                                                repeats:NO];

});

-(void)midnightUpdate{

}

アイデアはありますか?

4

2 に答える 2

0
NSTimer *midnightTimer = [NSTimer scheduledTimerWithTimeInterval:secs 
                                                          target:self 
                                                        selector:@selector(midnightUpdate)  
                                                        userInfo:nil 
                                                         repeats:YES];
[midnightTimer fire];
于 2013-10-13T12:13:00.230 に答える
0

可能な用途:

dispatch_after
指定された時間に実行するためにブロックをキューに入れます。

void dispatch_after(
   dispatch_time_t when,
   dispatch_queue_t queue,
   dispatch_block_t block);

別のSO回答から:

// Delay execution of my block for 10 seconds.
dispatch_time_t futureTime = dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC);
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_after(futureTime, aQueue, ^{
    < midnightUpdate code>
});
于 2013-10-13T12:16:07.697 に答える