Это, вероятно, то, что я должен знать, я создаю экземпляр NSTimer, используя метод класса NSTimer. Я уверен, что возвращенный объект будет автореализован, мой вопрос заключается в управлении памятью, если я должен сохранить и отпустить объект таймера (МЕТОД: 1) или просто просто назначить его прямо на @property (МЕТОД: 2) (или я должен делать что-то совершенно другое?)Сохраняемый объект, созданный методом класса?
// METHOD: 1
@property (nonatomic, retain) NSTimer *myTimer;
.
NSTimer *tempTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
[self setMyTimer:tempTimer];
//[tempTimer release];
.
- (void)dealloc {
[pulseTimer release];
[super dealloc];
}
ИЛИ ПРОСТО:
// METHOD: 2
myTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
EDIT:
Один последний момент, если я просто пишу (смотрите ниже) без присвоения собственности, есть ли шанс, что таймер будет получить освобожденный, в основном он остается вокруг, пока программа не выйдет. Просто любопытно, как это сохранилось?
[NSTimer scheduledTimerWithTimeInterval:120.0 target:self selector:@selector(executeOnTimer) userInfo:nil repeats:YES];
«NSTimer» имеет особое значение. Сообщение «scheduleTimerWithTimeInterval ...» не только инициирует таймер, но также добавляет его в runloop. Это предотвращает освобождение 'NSTimer', и вы должны вызывать метод' invalidate', чтобы вернуть права собственности из внутренних элементов цикла. Подробнее о [- (void) invalidate] (http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSTimer_Class/Reference/NSTimer.html#//apple_ref/occ/instm/ NSTimer/Invalidate). –