私のプログラムにスレッドがあります。それはNSTimerによって実行されます。私は自分のNSThreadまたはNSTimerを停止します。それは私のスレッドを停止します。しかし、やはり私のプログラムでスレッドを実行したいときは、前のスレッドは停止していません。したがって、以前のスレッドと現在のスレッドは一緒に実行されます。私のプログラムは以下の通りです。iphone - スレッドが停止していない、なぜプログラムのバックグラウンドで実行されますか?
- (void) startTimer{
timerThread = [[NSThread alloc]
initWithTarget:self
selector:@selector(startTimerThread) object:nil];
[timerThread start];
}
-(void) startTimerThread{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
timer = [[NSTimer scheduledTimerWithTimeInterval: 2.0
target: self
selector: @selector(timerTick:)
userInfo: nil
repeats: YES] retain];
[runLoop run];
[pool release];
}
- (void)stopTimer{
[timer invalidate];
[timer release];
timer = nil;
}
- (void)timerTick:(NSTimer *)timer
{
NSLog(@"THik");
}
私のプログラムには、スレッドを開始するための2つのボタンがあり、別のスレッドはスレッドを停止するためのものです。はじめてスレッドを実行して停止させるには、スレッドを正しく動作させる必要があります。しかし、2回目(スレッドを停止した後)に再びスレッドを実行したいときは、それを表示します。前のスレッドは停止せず、2つのスレッドが同時に実行されます。私を助けてください。
スレッドを停止するにはどうしたらいいですか?スレッドを再び実行したい場合は、前のスレッドではなく新しいスレッドを実行します。
ここでは、スレッドではなくタイマーを停止しています。スレッドに関しては、メソッド本体に関係なく複数のスレッドを実行できます。すなわち、あなたは 'startTimerThread'のために複数のスレッドを持つことができます –
そして実際に新しいスレッドを作成したいのか、それとも前のスレッドを実行したいのでしょうか? –