2015-05-09 3 views
2

Я работаю над приложением, в котором я создал таймер, который вызвал метод, создающий звук каждые 1 сек.
через 10 секунд он автоматически отменяется, но при нажатии одной кнопки i остановил таймер до 10 сек завершены, но когда снова я пришел к этой точке зрения он создает два таймера и методы вызова дважды и для третьего он называется тем же методом 3 разаns timer duplicate created 2-3 раза

DecilneTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(MakeSound) userInfo:nil repeats:YES]; 

и я быть_наст недействительный, что, как это на кнопке щелкните событие

[DecilneTimer invalidate]; 
DecilneTimer=nil; 

как решить дублирование создания таймера ???

+2

Что такое 'DecilneTimer', где и как оно объявлено. BTW, соглашение ios о том, что имена переменных и методов начинаются с буквы в нижнем регистре, а имена классов начинаются с прописной буквы. Это облегчает понимание кода. – zaph

ответ

0

Вы должны использовать:

self.DecilneTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(MakeSound) userInfo:nil repeats:YES]; 

Использование self.propertyName = ... используется свойство аксессор и сохранение NSTimer автоматически, так что он не получает создан снова и снова. И то, что вы делали, просто меняло значение ivar.

+0

В любом случае ARC поддерживает правильный счетчик ссылок. – zaph