2011-10-31 3 views
4

매 시간마다 내 방법 중 하나를 실행하는 새 스레드를 만들고 있습니다.잠자기 또는 일시 중지 NSThread

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

위의 방법은 내 setUpTimerThraed 메소드를 호출하고,이 방법은 NSTimer을하고 1 분마다 후 syncData 즉 특정 메서드를 호출하여 다음과 같이

지금 내가 뭘하고 있는가하는 것입니다. 이제 내가 원하는 것은 내 sync 데이터 메소드가 FTP 폴더로 일부 파일을 보내는 것입니다. 그리고 언제 FTP로 하나의 파일을 보내면 나는 잠시 동안 잠들 수있는 "스레드"를 원합니다.

내가

[NSThread sleepForTimeInterval:3.0]; 

을 사용하지만이 코드 블록 내 응용 프로그램 메인 쓰레드했다. 어떤 방법으로도 잠시 동안 내 "스레드"스레드를 잠글 수 있기 때문에 응용 프로그램이 3 초 동안 응답을 멈추고 내 스레드를 잠자 지 않습니다. 희망은 내가 사람들에게 물어 보는 것을 얻습니다. 도와주세요?

답변

6

sleepForTimeInterval: 스레드가 호출 된 스레드가 잠자기 상태가됩니다. 주 스레드가 아니라 잠자고 싶은 스레드에서 절전 모드를 호출하십시오.

다른 방법은 결코

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

다음이 방법

-(void)sleepThread { 
    [NSThread sleepForTimeInterval:3.0]; 
} 
0
ColdLogic의 솔루션이 옳다

을 구현하여 현재 수면 전화를 대체하지만, waitUntilDoneYES에 플래그를 넣어 neccesary입니다 라는.

관련 문제