2012-12-25 13 views
5

NSUserDefaults के लिए प्रलेखन का कहना है कि synchronise विधि को समय-समय पर कॉल किया जाता है लेकिन यह कितनी बार उल्लेख नहीं करता है। Google खोजों के 10 मिनट ने कुछ भी प्रकट नहीं किया था।NSUserDefaults कितनी बार सिंक्रनाइज़ होते हैं?

synchronise विधि कितनी बार बुलाया जाता है?

+0

हम नहीं जानते। यह एक कार्यान्वयन विवरण है जिस पर आपको भरोसा नहीं करना चाहिए। यदि आपको परिवर्तनों को जारी रखने की आवश्यकता है, तो मैन्युअल रूप से 'सिंक्रनाइज़ करें'। –

+0

हालांकि, अगर आप उत्सुक हैं कि इसे कितनी बार बुलाया जाता है, तो एक सरल 'NSLog()' में एक विधि को तेज क्यों न करें और इसे स्वयं ढूंढें? –

+0

धन्यवाद, मैंने इसके बारे में नहीं सोचा था। – duci9y

उत्तर

8

यह एक कार्यान्वयन विवरण है जिसका खुलासा नहीं किया गया है (शायद यह एक स्थिर समय अंतराल भी नहीं है)। हालांकि, आप इसे - [NSUserDefaults synchronize] पर एक स्विजलिंग करके अपने आप को ढूंढ सकते हैं और इसके कार्यान्वयन को बदल सकते हैं ताकि यह हर बार सिंक्रनाइज़ होने पर NSLog() पर कॉल कर सके।

+0

जब मैंने प्रोग्राम शुरू किया था तब से 20 मिनट हो गए हैं और मानों को बदलने के बाद भी 'सिंक्रनाइज़' अभी तक नहीं बुलाया गया है। मैंने झुकाव सही किया। मैं अभी हार रहा हूँ। – duci9y

+0

@ duci9y ठीक है। सबक सीखा: ऐप्पल पर भरोसा न करें, क्योंकि वे धोखा दे रहे हैं :) स्वीकार करने के लिए धन्यवाद। –

+3

स्वचालित सिंक्रनाइज़ेशन मैन्युअल सिंक्रनाइज़ेशन के रूप में एक ही कोड पथ से नहीं जाता है (विशेष रूप से, यह CFPreferences में कार्यान्वित किया गया है, जो NSUserDefaults उपयोग करता है)। 10.7 और आईओएस पर, बदलाव के बाद यह लगभग 15 सेकंड अंतराल है, हालांकि यह स्थिर नहीं है। बेहतर सिंक्रनाइज़ेशन प्रदर्शन के कारण 10.8+ पर यह छोटा है। –

संबंधित मुद्दे