Цель C и iOS: запуск таймера? NSTimer / Threads / NSDate / etc

Я работаю над своим первым приложением для iOS, и у меня возникла первая проблема, на которую я не смог найти хорошего ответа.

Проблема: у меня есть пользовательский UIGestureRecognizer , и все он подключен правильно, и я могу запускать код для каждого касания в @selector после распознавания. Это было хорошо для большинства вещей, но для других это слишком много.

Моя цель: создать таймер, который срабатывает с заданным интервалом для выполнения логики, и иметь возможность отменить это в момент отмены касаний.

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

  • performSelector (и некоторые его варианты)
  • NSThread
  • NSTimer
  • NSDate
  • Очереди операций
  • Думаю, я нашел и другие ...

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

Пример реализации: NSPoint берется каждые 0,10 секунды, и берется расстояние между предыдущей и текущей точкой. [Определение расстояния между каждой точкой давало очень грязные результаты].

Соответствующий код:

- (void)viewDidLoad {
 CUIVerticalSwipeHold *vSwipe =
 [[CUIVerticalSwipeHold alloc]
 initWithTarget:self 
 action:@selector(touchHoldMove:)];
 [self.view addGestureRecognizer:vSwipe];
 [vSwipe requireGestureRecognizerToFail:doubleTap];
}

...

- (IBAction)touchHoldMove:(UIGestureRecognizer *)sender {
     if (sender.state == UIGestureRecognizerStateEnded) {

     }

     if (sender.state == UIGestureRecognizerStateBegan) {

     }

     //other stuff to do goes here

}
6
задан 一二三 27 December 2011 в 04:16
поделиться