2009-05-06 3 views

답변

152

예, +[NSThread sleepForTimeInterval:]

가 (당신이 미래의 질문 그냥 알다시피, 오브젝티브 C는 언어 자체입니다.; 객체 라이브러리 (이 중 하나 이상) 코코아입니다) 거기에 물론

+6

Thnx :

Thread.sleep(1000); 

객관적 C에 일초 자고 !
나중에 참조 할 수 있도록 정의는 실제로 + [NSThread sleepForTimeInterval :]입니다 (따라서 [NSThread sleepForTimeInterval : 0.1]처럼 사용됩니다). – TinkerTank

+0

이것은 완벽합니다. 감사! 방금 애니메이션 블록을 끝내고 매력처럼 작동했습니다. – RileyE

+0

주 therad에서자는 것이 어떨까요? – Dagon

7

, 표준 유닉스 sleep() 및 usleep() 호출도 사용할 수 있습니다. (코코아를 쓰는 경우, [NSThread sleepForTimeInterval :]에 머물러 있습니다.)

41

왜 자고 있니? 잠을 자면 UI와 백그라운드 URL이 다른 스레드에로드되지 않습니다. NSURL 비동기 메서드를 사용하면 현재 스레드에서 계속 작동합니다.

performSelector : withObject : AfterDelay가 실제로 원하는 것입니다. NSObject에 대한 메소드로 나중에 일정 시간 간격으로 메소드를 호출 할 수 있습니다. 나중에 수행 할 호출을 예약하지만 스레드가 처리하는 다른 모든 요소 (UI 및 데이터로드와 같은)는 여전히 계속됩니다.

+38

잠자는 것은 테스트 목적으로 유용합니다. 내 애플 리케이션이 제대로 응답하는지 확인하기 위해 네트워크 지연을 시뮬레이트 할 수있다. 현재 로컬 웹 서버를 테스트 중이므로 모든 것이 본질적으로 순식간입니다. – brantonb

+6

수면은 네트워크 지연을 테스트하는 잘못된 방법입니다. 시뮬레이터에서 네트워크의 다양한 속도를 테스트하는 방법을 보려면이 질문에 대한 답을 찾아보십시오. http://stackoverflow.com/questions/1502060/iphone-intermittent-network-testing 메인 스레드를 잠자 게하면 모든 것이 차단되기 때문에 네트워크 지연을 시뮬레이션하지는 않지만 앱을 더 많이 중단시킬 수 있습니다. –

+0

Sleeping은 JAVA 스레드의 조인 작업에서 수행되는 작업을 시뮬레이션하는 데 유용합니다. 당신은 10 밀리 동안 자고, 스레드가 죽었는지 확인한 후 그것을 해제 할 수 있습니다. –

0
필자는 항상 현재 스레드를 일시 정지하려면이 옵션을 사용

usleep()를 사용할 수도 있습니다

5

당신이 NSThread sleepForTimeInterval (주석 코드) 차단됩니다 데이터를 가져 오는 잠, 그러나 +을 사용하는 경우 [NSThread sleepForTimeInterval : ] (checkLoad 메서드)는 데이터 가져 오기를 차단하지 않습니다. 아래

내 예 번호 :

- (void)viewDidAppear:(BOOL)animated 
{ 
//.... 
//show loader view 
[HUD showUIBlockingIndicatorWithText:@"Fetching JSON data"]; 
// while (_loans == nil || _loans.count == 0) 
// { 
//  [NSThread sleepForTimeInterval:1.0f]; 
//  [self reloadLoansFormApi]; 
//  NSLog(@"sleep "); 
// } 
[self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f]; 
} 

-(void) checkLoad 
{ 
    [self reloadLoansFormApi]; 
    if (_loans == nil || _loans.count == 0) 
    { 
     [self performSelector:@selector(checkLoad) withObject:self afterDelay:1.0f]; 
    } else 
    { 
     NSLog(@"size %d", _loans.count); 
     [self.tableView reloadData]; 
     //hide the loader view 
     [HUD hideUIBlockingIndicator]; 
    } 
} 
77

는 자바 일초 자고 :

[NSThread sleepForTimeInterval:1.0f]; 
관련 문제