2011-10-31 119 views
4

我正在創建一個新的線程,在每個特定時間段後運行我的一個方法。睡眠或暫停NSThread

現在我在做什麼如下:

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(setUpTimerThread) object:nil]; 
[thread start]; 

上面的方法調用我的setUpTimerThraed方法,而且這種方法使一個NSTimer並調用每1分鐘之後即syncData的具體方法。現在我想要的是我的同步數據方法正在發送一些文件到FTP文件夾。並且當它發送一個文件到FTP時,我想讓它「睡眠」一段時間。

我已經使用

[NSThread sleepForTimeInterval:3.0]; 

但這個代碼塊我的應用程序的主線程。有沒有什麼辦法我只能睡一段時間我的「線程」線程,以便它不會停止我的應用程序響應3秒鐘,並且不會睡眠我的主線程。 希望你得到我要問的人。請幫忙?

回答

6

sleepForTimeInterval:睡覺它被調用的線程。嘗試在想要睡眠的線程上調用sleep,而不是主線程。

替換當前的睡眠通話與

[self performSelector:@selector(sleepThread) onThread:thread withObject:nil waitUntilDone:YES]; 

則實現此方法

-(void)sleepThread { 
    [NSThread sleepForTimeInterval:3.0]; 
} 
0

ColdLogic的解決方案是正確的,但它是neccesary把標誌waitUntilDoneYES,否則該方法是永遠調用。