2009-09-23 2 views
9

내 응용 프로그램에서 다음을 구현했습니다. 수면 기능 대신 사용할 수

for(i=0;!stopThroughButtons && i<totalMovements;i++){ 
     [NSThread detachNewThreadSelector:@selector(moveNeedle) toTarget:self withObject:nil]; 
     sleep(0.3); 
    } 
여기

sleep

unsigned int 형 인수 함수이다.

수면 방법은 수면 시간을 초 단위로 사용합니다.

수면 시간을 밀리 초 단위로 지정하고 싶습니다.

어떤 대체 제품을 사용할 수 있습니까?

+0

sleep()이 잘못된 답변입니다. 아래를 참조하십시오. – bbum

+0

확인. 하지만 지금은 내 논리에서 수면을 제거하고 대신 수면 및 스레드 대신 타이머를 사용했습니다. 좋아, 앨범. 귀하의 의견은 저에게주의를 기울였습니다. –

답변

33

두 가지 옵션 :
int usleep(useconds_t useconds) 이 나노초

+0

우수. 훌륭한 지식. –

+0

마침내 이것을 구현했습니다. & 그것 작동합니다. 위한 (! && stopThroughButtons가 나는 = 0 = 9) \t \t \t \t 체류; \t \t \t [NSThread detachNewThreadSelector : @selector (moveNeedle) toTarget : self withObject : nil]; \t \t \t usleep (200000); \t \t} –

+3

아래의 cdespinosa의 답변을 참조하십시오. sleep()을 사용하는 것은 거의 항상 잘못된 대답입니다. – bbum

3

아마도 나노초가 걸리는 nanosleep()을 원할 수도 있습니다. 이러한 수면 시간은 정확하지 않다는 것을 명심하십시오. 따라서 실제로 가지고있는 것은 몇 백분의 1 초보다 정확하게 수면 시간을 지정하는 것입니다.

+0

nanosleep (<# const struct timespec * #>, <#struct timespec * #>) 선생님, 제게 말해 주겠습니까? –

33

이도의 소수 초 단위로 시간이 걸립니다 NSThread의 + sleepForTimeInterval :를 사용하는 마이크로
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)을 사용합니다. 예 :

[NSThread sleepForTimeInterval:0.05]; 

은 50 밀리 초 동안 대기해야합니다.

+0

감사합니다. 그러면 주 스레드가 50 밀리 초 동안 유지됩니다. :) –

16

시작한 다른 스레드에서 언급했듯이 이벤트 전달을 차단하고 UI를 고정 시키므로 주 스레드에서 잠을 자지 않는 것이 좋습니다. 루핑과 수면 대신 타이머를 작동시키고 타이머가 작동하면 작업을 수행하기를 원할 것입니다.

+1

+1, 자고 거의 항상 잘못된 일을합니다 –

+0

좋아. 하지만 지금은 내 논리에서 수면을 제거하고 대신 수면 및 스레드 대신 타이머를 사용했습니다. 좋아, 앨범. 귀하의 의견은 저에게주의를 기울였습니다. –

+0

UI 테스트에서 테스트 응용 프로그램이 테스트 된 응용 프로그램과 다른 프로세스에서 실행 중이기 때문에 수면 메소드가 유용 할 수 있습니다. – user3426913

관련 문제