2011-06-20 89 views
0

我的程序中有一個線程。它由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

嘿現在你在這裏停止定時器不是線程。並且就線程而言,無論它們的方法體是什麼,都可以運行多個線程。即你可以有多個線程'startTimerThread' –

+0

,哪些是你想在實際創建新的線程或只是運行前一個。? –

回答

1

你只停止在stopTimer方法計時器。線程仍在執行。 要停止線程,您可以做[NSThread exit];

這將停止「當前」線程。

要了解更多有關停止線,是指其類引用here,並檢查了「退出」的方法。

所以,如果在主線程調用[NSThread exit],將退出主線程。

相關問題