X 秒ごとに「更新」を実行する特定のオブジェクトがあります。("The Updater") 私がこの反復的な更新を行う方法は、呼び出すことperformSelector:withObject:afterDelay
であり、セレクターで必要に応じて再スケジュールしています。
もちろん、 を呼び出してこれらの呼び出しを停止する方法がありcancelPreviousPerformRequests
ます。
問題は、この「アップデーター」の割り当てが決して解除されないことです。Updater (AFAIK) を保持しているオブジェクトは他に 1 つだけあり、保持しているオブジェクトは割り当てが解除され、呼び出しが行われています。[self setUpdater:nil];
これはメソッドと関係があると思われますperformSelector:withObject:afterDelay
が、ドキュメントでその質問への参照が見つかりませんでした。
誰でもそれを確認または却下できますか?
ありがとう!
APPENDIX スケジューリング方法は次のとおりです。
-(void) scheduleProgressUpdate
{
[self stopProgressUpdates]; // To prevent double scheduling
[self performSelector:@selector(updateProgress)
withObject:nil
afterDelay:1.0];
}
-(void) updateProgress
{
// Perform update..
[self scheduleProgressUpdate];
}
-(void) stopProgressUpdates
{
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(updateProgress)
object:nil];
}