문제

NSSTRING으로서의 기능에 나오는 숫자 값을 검색하기 위해 웹 서비스와 의사 소통하고 있습니다. 이 숫자는 다른 행동을 수행 할 때까지 기다릴 정확한 시간을 말해 주며 정확한 것이 중요합니다.

예를 들어, 문자열이 "89283"인 경우 89.283 초를 기다려야합니다. 따라서 iPhone의 Objective-C의 가장 좋은 방법을 알고 싶습니다. 여기 내 샘플 코드가 있지만 정확하지 않은 것 같습니다.

NSString *myDelayString = @"89283";
int myDelay = [myDelayString intValue]/1000;
[self performSelector:@selector(myFunction) withObject:nil afterDelay:myDelay];

MyDelay 값은 실제로 NStimeInterval이어야한다고 생각하지만, 내가 가진 문자열에서 어떻게 만드는 방법을 잘 모르겠습니다. 미리 감사드립니다.

도움이 되었습니까?

해결책

다음은 이중 정밀도를 허용하기위한 변경 사항이있는 코드입니다.

NSString *myDelayString = @"89283";
NSTimeInterval myDelay = [myDelayString doubleValue]/1000;
[self performSelector:@selector(myFunction) withObject:nil afterDelay:myDelay];

정수 부서를 피할 수 있도록 문자열을 두 배로 얻으려면 DoubleValue를 사용하십시오. NSTIMEINTERVAL의 유형은 iPhone의 이중으로 정의되므로 이중 결과를 저장 한 다음 AfterDelay : 선택기의 일부로 전달할 수 있습니다.

다른 팁

NstimeInterval은 두 배이며 정수 부서를하고 있습니다. 유형을 변경하십시오 int 에게 double 그리고 당신은 좋을 것입니다.

런 루프를 사용하는 지연, 그대로 또는 NSTIMER를 사용하는 것은 이전 이벤트가 완전히 처리 될 때까지 항상 기다려야하기 때문에 매우 부정확합니다. 실행할 때 코드가 예상보다 100ms 이상을 실행할 수 있습니다.

따라서 높은 정밀도에도 불구하고 정확도는 심각하게 부족할 것입니다.

이 정확한 타이밍이 필요한 이유에 따라 계산을 수정하고 차이를 렌더링 할 수 있습니다.

댓글을 추가하기에 충분한 담당자가 없지만 MyDelay를 100.0으로 나누도록 float로 변환하는지 확인하십시오. 그렇지 않으면 기대하는 것을 얻지 못할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top