如何在另一个线程中调用方法?

时间:2014-04-22 07:32:35

标签: ios

我有一个tableview。但是当我滚动表格视图时,我的计时器在那时停止,并在滚动后再次调用它。 所以我想在另一个线程中调用该计时器。

 // This is my timer..

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

 // This is my another thread method. I am trying like this but its not working

  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [self Timer_Called];
  });

任何人都可以建议我吗?

1 个答案:

答案 0 :(得分:0)

当用户滚动表或其他UIScrollView时,

NSTimer通常不会触发 - 或者执行将运行循环置于事件跟踪模式的任何其他操作。

当我们定义这样的计时器时:

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

计时器以NSDefaultRunLoopMode的默认运行循环模式添加。这意味着当默认运行循环模式处于暂停状态时,您的计时器将被有效冻结。

如果在滚动表格视图时需要运行计时器,请执行以下操作:

NSTimer *timer = [NSTimer timerWithTimeInterval:1.0
                                           target:self
                                         selector:@selector(Timer_Called)
                                         userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

希望这会有所帮助.. :)