2013-10-07 4 views
7

मैं मैक ओएस एक्स ऐप पर काम कर रहा हूं जो माउंटेन शेर के लिए विकसित किया गया था। ऐप पहली बार कुछ सेटअप कार्यों को निष्पादित करता है। यह [NSUserDefaults standardUserDefaults] में ध्वज सेट करता है; बाद में चलता है कि एप जांचता है कि यह ध्वज सेट है या नहीं, और यह सेट होने पर इन पहली बार सेटअप कार्यों को निष्पादित नहीं करता है।एनएसयूसर डीफॉल्ट मैक ओएस एक्स पर डेटा स्टोर करता है?

माउंटेन शेर पर, मैं एप्लिकेशन द्वारा NSUserDefaults में संग्रहीत सब कुछ का सफाया करने के लिए ~/Library/पसंद/bundleid.plist फ़ाइल को नष्ट करने में सक्षम था। हालांकि, मैक ओएस एक्स के हाल के संस्करणों पर, जब ऐप चलता है तो वह उस फ़ाइल को भी नहीं बना रहा है। मैंने सत्यापित किया कि यह डीएसयूजर में [[NSUserDefaults standardUserDefaults] objectForKey:@"foo"] से वापस आने वाले मानों का निरीक्षण करके NSUserDefaults को सफलतापूर्वक डेटा सहेज रहा है।

क्या कोई मुझे NSUserDefaults में संग्रहीत मेरे ऐप की सेटिंग्स को हटाने के तरीके के बारे में सही दिशा में इंगित कर सकता है?

+1

मैवरिक्स अभी भी एनडीए के तहत है, इसलिए मुझे संदेह है कि कोई भी सीधे आपके प्रश्न का उत्तर दे सकता है। उस ने कहा, क्या आपने यह देखने के लिए fs_usage (ओएस एक्स के सभी संस्करणों में उपलब्ध एक उपकरण) का उपयोग करने का प्रयास किया है, यह देखने के लिए कि ऐप प्लेस्ट को सहेजने का प्रयास कर रहा है? – iccir

+0

ओह, मेरे बुरे - मैंने मैवरिक्स के संदर्भ हटा दिए। – Greg

+0

मुझे लगता है कि यह सुरक्षित है, हालांकि: https://devforums.apple.com/message/894120 –

उत्तर

18

Mavericks अभी तक जारी नहीं किया गया है, इसलिए मैं इस सवाल के उस हिस्से को अनदेखा कर रहा हूं। यदि आप मैवरिक्स-विशिष्ट उत्तर चाहते हैं तो आपको डेवलपर मंचों पर पूछना चाहिए।

ओएस एक्स संस्करण के बावजूद, एक चूक डोमेन को हटाने का सही तरीके से defaults delete bundleid या its programmatic equivalent के साथ है। ~/Library/Preferences एक कार्यान्वयन विस्तार है। उसमें निहित प्लेस्ट में हमेशा नवीनतम जानकारी नहीं होती है। माउंटेन शेर से पहले, डिफ़ॉल्ट परिवर्तनों में डिफ़ॉल्ट परिवर्तनों को डिफ़ॉल्ट रूप से बफर किया जाता है जब तक वे synchronize नहीं; माउंटेन शेर में और बाद में, उन्हें cfprefsd प्रक्रियाओं में स्मृति में बनाए रखा जाता है और डिस्क को आलसी ढंग से फ़्लश किया जाता है।

अधिक जानकारी के लिए Core Foundation release notes for 10.8 देखें।

2016 अपडेट: NSUserDefaults की स्थिति के लिए एक वर्तमान मार्गदर्शिका here है।

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