не много идти дальше ... но:
@property (nonatomic, retain) NSTimer *timer;
self.timer = [[NSTimer timerWithTimeInterval:kAdsAppearTimeInterval target:self selector:@selector(timerFired:) userInfo:nil repeats:NO] retain];
Это будет в конечном итоге сохранить Таймера 3 раза и один раз сам.
- Таймер + 1 для -retain
- Таймер + 1 для планирования его
Таймер + 1 для задания свойств
self
+1 за то, что цель таймера
Таймер будет выпущен один раз при запуске (поскольку он будет незапланирован из цикла запуска). self
будет выпущен, когда таймер будет признан недействительным или выпущен (вам не придется заботиться).
Итак, у вас есть два счета для учета. Вызов retain
в коде выше - шум; не беспокойтесь, поскольку присвоение свойства сохранит его.
Это оставляет имущество сохранено. Самый очевидный способ - выпустить таймер в -dealloc.
Однако, если вам не требуется потенциально аннулировать таймер перед его запуском, нет причин иметь переменную экземпляра, относящуюся к таймеру вообще. Даже если у вас есть iVar, нет причин удерживать таймер либо , сколько вы установили self.timer = nil в свой timerFired:
метод (и установите его на ноль, если вы недействительны в любом месте).
Что вы подразумеваете под «этим кодом получить CFRelease»? – kubi
мое приложение разбилось - и я получаю CFRelease – Voloda2
Но «CFRelease» не является ошибкой. –