2009-07-04 4 views
9

पर 1 सेकंड से अधिक समय तक सिस्टम समय तक पहुंचने के लिए सिस्टम सिस्टम फ़ंक्शन टाइम (0) मुझे 1 सेकंड का रिज़ॉल्यूशन देता है, है ना?आईफोन

क्या कोई बेहतर अनाज वाला कार्य है?

मैं दो घटनाओं के बीच समय अंतराल निर्धारित करने के लिए इसका उपयोग कर रहा हूं।

कोड की एक पंक्ति मुझे बहुत मदद करेगी। जब मैं आधिकारिक दस्तावेज में देखता हूं तो अवधारणा को लटकाने के लिए कुछ ठोस बनाना आसान बनाता है।

+0

+1। धन्यवाद @ ज़ौल। – willc2

+0

पवित्र धूम्रपान, मेरा प्रश्न पहले से ही "सिस्टम समय (0)" – willc2

+0

के लिए Google परिणामों में दिख रहा है यह महत्वपूर्ण है: मूल्य CFAbsoluteTimeGetCurrent से वापस किया गया है: सेकंड की इकाइयों में एक डबल है लेकिन संकल्प सेकंड में नहीं है। यह उप-मिलीसेकंद है। मुझे इस बिंदु पर ऐप्पल प्रलेखन भ्रामक लगता है। – Ant

उत्तर

17

CFAbsoluteTimeGetCurrent देखें:

CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); 
// do something you want to measure 
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); 
NSLog(@"operation took %2.5f seconds", end-start); 

आप CFAbsouteTime भी वर्बोज़, तो आप बस double बजाय उपयोग कर सकते हैं करना चाहिए। मैंने पूछा कि वास्तविक कोड डालने के लिए

+0

क्या आप इसे वाक्य में उपयोग कर सकते हैं? – willc2

+0

आप उससे दूसरे से कम अंतराल कैसे प्राप्त करेंगे? – willc2

+0

लौटा हुआ मूल्य एक डबल है, जो मिलीसेकंड प्राप्त करने के लिए 1000 से गुणा करें या μs प्राप्त करने के लिए 1e6 से गुणा करें। – zoul

1

क्या आपने gettimeofday() देखा था? time() के समान उप-दूसरे रिज़ॉल्यूशन समय के लिए यह मुख्य POSIX फ़ंक्शन है।

इसके उपयोग के उदाहरण के लिए Native App Development for the iPhone देखें।

1
self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval 
         target:self selector:@selector(drawView) userInfo:nil 
         repeats:YES]; 

यह ओपनजीएल ऐप टेम्पलेट से एक स्निपेट है। यदि आप एक उच्च रिज़ॉल्यूशन टाइमर की तलाश में हैं, तो शायद आपको इसकी आवश्यकता है।

4

NSDate में timeIntervalSinceDate: विधि है, जो double ("10,000 साल की सीमा से उप-मिलीसेकंड परिशुद्धता" ऐप्पल कहती है)।

NSDate *start = [NSDate date]; 
… 
NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:start]; 
+0

क्या आप जानते हैं कि इसका उपयोग दो बार के बीच अंतर पाने के लिए कैसे किया जाए? – willc2

+1

समय का उपयोग करें इंटरवलस 1 9 70 और फिर तुलना करें। यह सेकंड में दिया गया है, लेकिन कई दशमलव स्थानों के साथ - ताकि आप एमसीसी, आदि प्राप्त करने के लिए 1000 से गुणा कर सकें ... –