2015-10-22 2 views
2

Я пытаюсь вызвать метод + задержка внутри контроллера Часы OS2 (WKInterfaceController) с задержкой с помощью:Часы OS2 - performSelector: не работает в контроллере

[self performSelector:@selector(createPages) withObject:nil afterDelay:3.0];

и метод:

- (void) createPages { 
    NSLog(@"Creating pages"); 
} 

Метод createPages никогда не называется. Не обнаружено никаких ошибок в консоли. Похоже, он полностью игнорирует это. Кто-нибудь знает, почему это может произойти?

Спасибо!

G

+0

где вы ссылаетесь на createPages with performSelector? Время, вызываемое функцией после задержки, иногда задерживается. Но он должен работать, если он находится в awakeWithContext или willActivate. – tipsywacky

+0

@tipsywacky, называя это 'willActivate' – GivP

ответ

2

Использование Grand Central Dispatch является лучшим подходом для такого рода вещей, и он также будет работать со статический отправлены методами, если вы используете Swift. Вы можете выполнить код через 3 секунды, как это:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [self createPages]; 
}); 

Отъезд Concurrency Programming Guide для получения дополнительной информации.

+0

Спасибо! Будет использовать GCD. Хотелось бы также знать, почему функция Performer не работает. – GivP

+0

Из кода, который вы опубликовали, единственное, что у меня есть, это то, что я не является классом, в котором реализована реализация createPages. Но это просто предположение, так как я не вижу, откуда все код. –

+0

Та же проблема с performSelector. Прекрасно работает в WatchOS 1 и не работает в WatchOS2 –

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