Có API nào để có được NSDate
hoặc NSTimeInterval
đại diện cho thời gian hệ thống khởi động không? Một số API chẳng hạn như [NSProcessInfo systemUptime]
và thời gian trả về Core Motion kể từ khi khởi động. Tôi cần phải tương quan chính xác các giá trị thời gian hoạt động này với NSDate
s, khoảng một phần nghìn giây.Lấy thời gian khởi động hệ thống chính xác trên iOS/OS X
Thời gian từ khi khởi động cung cấp độ chính xác cao hơn, nhưng dễ dàng thấy rằng NSDate
đã cung cấp độ chính xác theo thứ tự 100 nano giây và bất kỳ thứ gì dưới một micro giây chỉ đo độ trễ ngắt và jitter đồng hồ PCB.
Điều hiển nhiên là trừ thời gian hoạt động từ thời điểm hiện tại [NSDate date]
. Nhưng giả định rằng thời gian không thay đổi giữa hai cuộc gọi hệ thống, đó là, tốt, khó thực hiện. Hơn nữa nếu thread được preempted giữa các cuộc gọi, tất cả mọi thứ được ném ra. Cách giải quyết là lặp lại quá trình nhiều lần và sử dụng kết quả nhỏ nhất, nhưng yuck.
NSDate
phải có bộ đệm chính để sử dụng để tạo đối tượng với thời gian hiện tại từ thời gian hoạt động của hệ thống, có thực sự không có cách nào để lấy nó?
Bạn đã chấp nhận câu trả lời, nhưng như @ hotpaw2 đã lưu ý, 'NSDate' là dấu thời gian trên tường và các thay đổi như tiết kiệm ánh sáng ban ngày và cập nhật NTP có thể gây ra hai khoảnh khắc liên tiếp theo thời gian thực 'NSDate' s (hoặc 'time_t's hoặc bất kỳ dấu thời gian nào khác của đồng hồ treo tường.) –
@JonathanGrynspan Thực ra vấn đề không được giải quyết cho sự hài lòng của tôi. Có vẻ như Apple không hề tạo ra các dấu thời gian mạnh mẽ, mặc dù đã thay đổi định dạng giữa CoreLocation và CoreMotion trong một nỗ lực cải tiến rõ ràng. Tiết kiệm ánh sáng ban ngày ít nhất không nên tạo sự khác biệt khi NSDate đo lường GMT. Đối với những gì nó có giá trị ứng dụng của tôi sẽ yêu cầu chế độ máy bay "cho hiệu suất tối ưu" như nhận cuộc gọi là xấu cho hoạt động thời gian thực. Điều này cũng sẽ ngăn chặn NTP. – Potatoswatter
Bạn đang cố gắng đạt được điều gì? Bạn cần có những dấu hiệu cụ thể nào cho dấu thời gian chính xác? Apple thực hiện các dấu thời gian khá giống với cách mà mọi hệ thống khác thực hiện, chỉ với các tên kiểu khác nhau. –