타이머를 시작하는 IBAction이 있습니다.1 초 동안 실행 일시 중지
나는 특정 시간 동안 두 번째 또는 일시 중지를하고 싶습니다. 실행을 일시 중지하려면 어떻게해야합니까?
은 내가 [self performSelector:@selector(someMEthod:) withObject:someObject afterDelay:1.0];
알고하지만 어떻게 난 그냥 아무것도 호출하지 않고 지연 될 수 있습니까?
감사합니다.
타이머를 시작하는 IBAction이 있습니다.1 초 동안 실행 일시 중지
나는 특정 시간 동안 두 번째 또는 일시 중지를하고 싶습니다. 실행을 일시 중지하려면 어떻게해야합니까?
은 내가 [self performSelector:@selector(someMEthod:) withObject:someObject afterDelay:1.0];
알고하지만 어떻게 난 그냥 아무것도 호출하지 않고 지연 될 수 있습니까?
감사합니다.
sleep()
또는 +[NSThread sleepForTimeInterval:]
으로 전화 할 수 있지만 주 스레드에서는 호출하지 마십시오. 메인 스레드의 실행을 일시 중지하면 앱 UI가 그 시간 동안 차단되고 사용자에게 충돌 한 것처럼 보입니다. 메인 스레드를 몇 초 이상 차단했다면 애플의 워치 독 타이머가 앱을 즉시 죽일 것이다.
sleep (int_No_of_Sec); // 예. 수면 (1);
당신은 아무것도를 호출하지 않고 지연 될 싶지 않아요. UI에 좋지 않으며 코코아 터치의 이벤트 중심 패러다임에 맞지 않습니다.
일시 중지하려는 루틴을 (최소한) 두 부분/반으로 자릅니다. 전반전에 후반 (지연, 타이머, 대기열 등으로 선택기를 수행)에 대한 지연 호출을 설정 한 다음 기본 루프로 돌아갑니다. 운영체제는 잠시 후에 잠재적으로 유용한 자료를 작성한 후 두 번째 부분을 호출합니다 (사용자에게 반응 형 UI를 부여하거나 배터리 수명을 절약하고 백그라운드 이메일을 따라 잡거나 등)
(루프 변수 등) 사이의 상태를 저장하기 위해 일부 새로운 프로그래머가 학습에서 놓치고있는 것처럼 보입니다.
차가움. 타이머를 시작하는 IBAction에 sleep()을 넣을 것입니다. sleep()이 인수를 취합니까? 또는 나는 어디서 잠을 자야 할까? 저는 버튼을 누를 때 시작되는 수많은 IBActions를 가지고 있습니다. 이러한 동작은 각각 타이머를 시작하고, 타이머 시작 간격이 필요합니다. 이 방법을 사용하면 주요 실행을 차단하지 않습니다. – jarryd
왜 그렇게 생각하니? 버튼에 대한 탭 동작은 메인 스레드에서 호출됩니다. 그냥하지 마. –
나는 제대로 설명하지 못했다. 동일한 IBAction에 다수의 IBActions를 연결합니다. 각 IBAction은 타이머를 시작하는 다른 함수를 호출합니다. 이 타이머들은 서로 즉시 시작됩니다. 어떻게 그 사이에 작은 지연을 넣을 수 있습니까? 다음과 같이 지연을 사용할 수 있습니까? countdownTimer2 = [NSTimer scheduledTimerWithTimeInterval : 0.10 target : 셀렉터 : @selector (handleTimer) userInfo : nil 반복 : YES]; ? – jarryd