2011-01-18 19 views
6

मिटा दी जाती है, मैं अपने ऐप में ABAddressBook का उपयोग करता हूं।
यूआई को रिहा करने के लिए एबी तक पहुंच अलग थ्रेड से है।
मुझे इस तथ्य से अवगत है कि एबी इंस्टेंस तक पहुंच हर समय एक ही थ्रेड से होनी चाहिए और मैंने इस कारण से एक रैपर बनाया है।
रैपर एक सिंगलटन है और यह अपने स्वयं के पृष्ठभूमि धागे को बनाए रखता है।
सभी संदेश है कि आवरण के लिए आते हैं स्वचालित रूप से, पृष्ठभूमि धागा पर पुनः निर्देशित कर रहे हैं जबकि बुला धागा कार्यान्वयन के अंत तक इंतजार कर रहा है और अंत में प्रासंगिक डेटा (संपर्क सूची, एक विशिष्ट संपर्क आदि) के साथ बाहर तर्क भरता है ।आईफोन: पता पुस्तिका कभी-कभी

हालांकि यहां तक ​​कि, डिवाइस पर पता पुस्तिका खाली (मिट) कभी कभी हो जाता है।
ऐप के हर 10-20 वें उपयोग के बाद।

तो, मैं कुछ प्रश्न हैं:

  • बाद मैं समर्पित सूत्र में एबी से ABRecordRef मिल मैं एक ही धागे में भी ABRecordRef से डेटा पुनः प्राप्त करने के लिए है या यह एक और धागा हो सकता है? मेरे पास ABRecordRef के लिए एक रैपर भी है, इसलिए जब मैं एबी से संपर्क प्राप्त करता हूं तो मैं व्यक्ति रैपर ऑब्जेक्ट भरता हूं और इसके बाद मैं इसे मूल थ्रेड से (ABRecordRef से पढ़ता हूं) का उपयोग करता हूं।
  • जब मैं एबी यूआई API (व्यक्ति पिकर नेविगेशन नियंत्रक, नए व्यक्ति दृश्य नियंत्रक आदि) का उपयोग करें और उन्हें ABAddressBook की मेरी उदाहरण पारित मैं तथ्य यह है कि एपीआई से इस एबी उदाहरण का उपयोग नहीं होगा बारे में चिंता करने की क्या ज़रूरत है वही धागा जिसने इसे बनाया? मैंने देखा है कि मैं एबी इंस्टेंस के बजाय न्यूल पास कर सकता हूं और फिर एपीआई अपने एबी का उपयोग करेगा, लेकिन जब मैं संपर्क को संशोधित करना चाहता हूं तो मैं क्या कर सकता हूं? इस मामले में मुझे इसे ABRecordRef उदाहरण पास करना होगा ...
  • क्या कोई और चीज़ है जिसके बारे में मैंने नहीं सोचा था?

अग्रिम धन्यवाद।

-
माइकल

उत्तर

4

आप केवल एक ही धागे कि ABAddressBookCreate कहा जाता है() से पता पुस्तिका में प्रवेश करना होगा। आप किसी अन्य धागे में ABRecordRef का उपयोग नहीं कर सकते हैं। धागे के बीच पारित करने के लिए केवल आईडी और प्रतिलिपि डेटा सुरक्षित हैं।

आमतौर पर, मैं एक धारावाहिक प्रेषण कतार बना सकते हैं और पता पुस्तिका कॉल कि मुख्य थ्रेड ब्लॉक नहीं कर सकते हैं के लिए एक आवरण के रूप में उपयोग।

आप यूआई का उपयोग करते हैं, तो आप() मुख्य थ्रेड पर ABAddressBookCreate फोन और प्रयोग है कि आपके यूआई कॉल के लिए की जरूरत है।

आप यूआई के साथ एक संपर्क संशोधित करने की जरूरत है, तो आप, संपर्क को संशोधित करेगा, सहेजें, फिर अपनी पृष्ठभूमि धागा या कतार पर पता पुस्तिका अपडेट करें कि वह नवीनतम परिवर्तनों में शामिल है। इस उद्देश्य के लिए एक अधिसूचना कॉलबैक ABAddressBookRegisterExternalChangeCallback है।

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