2011-05-09 1 views
4

마지막 장치 부팅에서 NSTimeInterval 값을 가져와야합니다. 이 작업에 적합한 CACurrentMediaTime()을 찾았지만 Core Animation을 사용하지 않고이 기능을 사용하기 위해이 프레임 워크를 포함시키는 것이 가장 좋은 방법이라고 생각하지 않습니다. 마지막 부팅에서 초 단위로 시간을 얻는 또 다른 방법이 있습니까?마지막 부팅에서 NSTimeInterval 값을 얻는 방법

답변

16

마지막 시스템 재시작은 다음의 예비 물체 및 방법을 통해 더욱 직접적으로 취득 할 수 있기 때문에 NSTimeInterval 값 :

[[NSProcessInfo processInfo] systemUptime]

+0

당신은 그것을 발견 했으므로 상금을받을 자격이 있습니다! 정답은 당신 것입니다. 하지만 ... 메서드 이름에 오타가 있습니다 :'systemUptime' – voromax

+0

Doh. iPhone 입력;) – uchuugaka

+0

부팅 후 시간이 필요하지는 않습니다. 설명서에는 다음과 같은 내용이 나와 있습니다. 시스템을 마지막으로 다시 시작한 이후로 깨어있는 시간. iOS 10 베타 버전에서는 적어도 잠자기 시간을 추가하지 않는 것 같습니다. –

-1

C 시스템 호출을 시도하면 times (3)가 가동 시간을 반환합니다.

MacOSX에서 가동 시간도 이와 같이 반환됩니다. 그래서 그 방법이 있어야합니다.

+0

iOS에서 시스템 호출을 할 수있는 가능성은 없습니다. 하지만 이제는 하나의 솔루션을 발견했습니다 - mach_absolute_time을 변환해야합니다. – voromax

+0

아니요, 분명히 iOS에서 시스템 호출을 할 수 있습니다. – DavidN

+0

예 ... iOS에는 system() 기능이 있지만 많은 명령을 사용할 수 없습니다. 마지막 장치 부팅에서 초 단위로 double 값을 얻는 가장 좋은 방법은 아닙니다. 나는이 게시물에 대한 mach_absolute_time (http://stackoverflow.com/questions/1450737/what-is-mach-absolute-time-based-on-on-iphone)에 대한 몇 가지 추가 정보를 찾았지만 여전히 많은 경우 궁금합니다 (코어 애니메이션, AVFoundation, UIAccelerometer 등) iOS 에서이 시계를 기반 으로이 시간을 얻을 수있는 간단한 일반적인 방법은 – voromax

1

가장 빠른 저레벨있어서 사용 프로세서로부터 시스템 가동 시간을 판독한다 mach_absolute_time()

#include <mach/mach_time.h> 

int systemUptime() 
{ 
    static float timebase_ratio; 

    if (timebase_ratio == 0) { 
     mach_timebase_info_data_t s_timebase_info; 
     (void) mach_timebase_info(&s_timebase_info); 

     timebase_ratio = (float)s_timebase_info.numer/s_timebase_info.denom; 
    } 

    return (int)(timebase_ratio * mach_absolute_time()/1000000000); 
} 

timebase_ratio는 프로세서마다 다릅니다. 예를 들어, 맥북에서는 1이고, 아이폰 5에서는 125/3 (~ 40)입니다.