Это то, что озадачило меня на некоторое время.
У меня есть NSTimer, добавленный в currentRunLoop, и если я не сохраню его, он вылетает.
NSTimer *timer = [[NSTimer timerWithTimeInterval:60.0 target:self selector:@selector(tryUnion:) userInfo:nil repeats:NO] retain];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
Я прочитал, что мне не нужно его сохранять, так как addTimer для NSRunLoop делает это.
позже я аннулирую и освобождаю (если я не сохраняю выше, я не выпускаю ниже - это случай сбоя):
- (void) tryUnion:(NSTimer*)aTimer {
[aTimer invalidate];
[aTimer release];
}
Мои вопросы
1) Как мне написать это, если возможно сделать то, что я сделал, без сохранения / выпуска.
2) проанализировать флаги этой или потенциальной утечки объекта в «таймере». Как здесь написано, есть ли вероятность утечек или просто анализатор недостаточно умен, чтобы знать, что в функции, вызванной таймером, есть сбой?