0

viewDidLoadで初期化され、viewDidUnloadで解放されるタイマーがありますが、viewDidUnloadニューラルが呼び出され、ビューがユーザーに表示されるたびにviewDidLoadが呼び出されるため、多くのタイマーが同時に実行されています...私が欲しいものではありません。

ユーザーがこのビューから移動したときにタイマーを停止して解放したいのですが、どうすればよいですか?

4

1 に答える 1

4

ビューがロードされたときに初期化しないでください。代わりに、ビューで初期化すると表示され、ビューで停止すると消えます。そうすると、移動したときに停止し、ビューに戻ったら再起動します。

私はあなたが抱えているのとまったく同じ問題を抱えていました。これは、必要な場合に備えてコードです。

- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"View will appear");
myTimer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(pageCycler) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer: myTimer forMode: NSDefaultRunLoopMode];
}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"View will dissapear");
[myTimer invalidate];
myTimer=nil;
}
于 2012-06-28T17:47:50.467 に答える