割り当てが解除されていないサブクラス化されたUIViewがあります。ビューのインスタンスを作成しているクラスは1つだけです。私の見解ではNSTimerivarがあります。そのタイマーをコメントアウトし、このビューコントローラにあるキャンセルボタンをタップすると、このビューのdeallocが呼び出されます。タイマーをコメントアウトしないと、deallocが呼び出されることはありません。
//CustomUIView
- (id) initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_pollTimer = [[NSTimer scheduleTimerWithTimeInterval:0.2 target:self selector:@selector(onPollTimerFired:) userInfo:nil repeats:YES] retain];
}
}
タイマーを一時停止したい場合があるので、このタイマーへの参照を保持したいと思います。これで、タイマーのビューにプロパティを設定でき、カスタムuiviewへの参照を持つクラスのdeallocメソッドで、そのビューを解放する前に無効にすることができます。このタイマーを外部のエンティティに公開したくないので、このアプローチはあまり好きではありません。
誰かアイデアはありますか?