私はNSTimer
このようなものを使用しています:
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:self selector:@selector(tick) userInfo:nil repeats:YES];
もちろん、NSTimer
保持サイクルを作成するターゲットを保持します。さらに、 UIViewController ではないので、タイマーを無効にしてサイクルを中断できるself
ようなものはありません。viewDidUnload
したがって、代わりに弱い参照を使用できるかどうか疑問に思っています。
__weak id weakSelf = self;
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:weakSelf selector:@selector(tick) userInfo:nil repeats:YES];
タイマーを無効にする必要があると聞いたことがあります(実行ループから解放すると思います)。しかし、dealloc でそれを行うことができますよね?
- (void) dealloc {
[timer invalidate];
}
これは実行可能なオプションですか?人々がこの問題に対処する多くの方法を見てきましたが、これは見たことがありません。