2012-06-20 2 views
0

В моем блоке кода beginBackgroundTaskWithExpirationHandler в «-applicationDidEnterBackground» метод, я NSTimer реализуется следующим образом:метод Селектор NSTimer вызывается дважды в beginBackgroundTaskWithExpirationHandler

UIBackgroundTaskIdentifier taskId = [application beginBackgroundTaskWithExpirationHandler:^{ 
     timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(print:) userInfo:nil repeats:NO]; 
    }]; 

И Eventhough его repeats:NO «print'method как селектор дважды, что я вижу через NSLog.

Этот таймер не вызывается из любого места, кроме как в applicationDidEnterBackground.

ответ

1

Уверяю вас, что нет ничего плохого:

timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(print:) userInfo:nil repeats:NO]; 

Ваш метод «печать» Виль НЕ назвать дважды. Ваша проблема связана с чем-то другим. И еще одно, таймер с интервалом времени 0,0 довольно бессмысленен, не согласны ли вы?

+0

Хм .. Да, вы правы. Я не знаю, что это такое. Итак, я удалил таймер с блоком кода метода «print», и он вел себя одинаково. ТАК, кстати, это было связано с таймером. Но кажется, что блок кода для 'beginBackgroundTaskWithExpirationHandler' выполняется дважды. На самом деле, я использую менеджера CLLocation в своем проекте, может быть, это и есть причина этого? – lasata

+0

Я не могу быть уверен, не используя код. Расскажите, что вы сделали, и, возможно, я могу помочь. –

Смежные вопросы