zoukankan      html  css  js  c++  java
  • 在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

    1、第一种方法
    + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
    2、第二种方法
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(newThread) object:nil];

    [thread start];
     - (void)newThread
    {
         @autoreleasepool
         {
             [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(addTime) userInfo:nil repeats:YES];
             [[NSRunLoop currentRunLoop] run];
         }
     }
    3、第三种方法
    使用了GCD
    dispatch_source_t _timers;
         uint64_t interval = 0.01 * NSEC_PER_SEC;
         dispatch_queue_t queue = dispatch_queue_create("my queue", 0);
         _timers = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
         dispatch_source_set_timer(_timers, dispatch_time(DISPATCH_TIME_NOW, 0), interval, 0);
         __weak ViewController *blockSelf = self;
         dispatch_source_set_event_handler(_timers, ^()
         {
             NSLog(@"Timer %@", [NSThread currentThread]);
             [blockSelf addTime];
         });
         dispatch_resume(_timers);
    然后再主线程刷新
    dispatch_async(dispatch_get_main_queue(), ^{
    self.label.text = [NSString stringWithFormat:@"%.2f", self.timeCount/100];
    });
    (以上内容摘自http://www.faceye.net/search/120004.html)
  • 相关阅读:
    LeetCode | Remove Duplicates from Sorted List
    LeetCode | Remove Duplicates from Sorted Array
    LeetCode | Merge Sorted Array
    opencv的配置、使用
    LeetCode | Merge Two Sorted Lists
    LeetCode | Minimum Depth of Binary Tree
    LeetCode | Same Tree
    LeetCode | Maximum Depth of Binary Tree
    LeetCode | Insertion Sort List
    python运算符优先级
  • 原文地址:https://www.cnblogs.com/moonSong/p/4991028.html
Copyright © 2011-2022 走看看