Класс NSTimer немного неудобен в использовании; вместо того, чтобы отделять создание / уничтожение от начала / остановки, все это объединено. Другими словами, таймер запускается, как только он создан, и останавливается, как только он уничтожается.
Поэтому вам необходимо использовать существование объекта NSTimer в качестве флага, чтобы указать, работает ли он; как то так:
// Частные методы
@ interface MyClass ()
{
NSTimer * _timer;
}
- (void) _timerFired;
@ Конец
@ реализация MyClass
(IBAction) StartTimer: (идентификатор) отправитель
{
если (_timer == ноль)
{
_timer = [NSTimer scheduleTimerWithTimeInterval: 1.0f
Цель: самостоятельно
селектор: @selector (_timerFired)
USERINFO: ноль
повторяет: ДА] сохранить];
}
}
(IBAction) StopTimer: (идентификатор) отправителя
{
если (_timer! = ноль)
{
[_timer недействительным];
_timer = ноль;
}
}
(аннулируются) _timerFired
{
NSLog (@ "пинг");
}