Как вызвать метод в другом потоке?

У меня есть табличка. Но когда я просматриваю представление таблицы, мой таймер останавливается в это время и снова его вызов после прокрутки. поэтому я хочу вызвать этот таймер в другом потоке.

// 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 ответ

Обычно NSTimer не NSTimer когда пользователь прокручивает таблицу или другой UIScrollView, или делает что-либо еще, что ставит цикл выполнения в режим отслеживания событий.

Когда мы определяем таймер следующим образом:

[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];

Надеюсь это поможет.. :)

licensed under cc by-sa 3.0 with attribution.