2012-07-21 22 views
5

https://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.htmlआईओएस मॉडल परत सूचित नियंत्रक वस्तु

ऊपर के लिंक में, मैं कैसे मॉडल परत ViewController के साथ संवाद करना चाहिए के संबंध में निम्न देखें।

"जब कोई मॉडल ऑब्जेक्ट बदलता है (उदाहरण के लिए, नेटवर्क कनेक्शन पर नया डेटा प्राप्त होता है), यह नियंत्रक ऑब्जेक्ट को सूचित करता है, जो उपयुक्त दृश्य ऑब्जेक्ट को अद्यतन करता है।"

मेरा सवाल यह है कि मॉडल ऑब्जेक्ट कंट्रोलर ऑब्जेक्ट को कैसे सूचित करता है? यह विभिन्न तरीकों से क्या किया जा सकता है? मेरी मॉडल परत उपयोगकर्ता के स्थान को प्राप्त करती है और फिर एक वेब सेवा कॉल करती है। जब डेटा डाउनलोड होता है तो मुझे नियंत्रक ऑब्जेक्ट को कैसे सूचित करना चाहिए?

धन्यवाद

उत्तर

4

आपके विशिष्ट मामले के आधार पर ऐसा करने के कई तरीके हैं। आम तौर पर आप एक प्रोटोकॉल/प्रतिनिधि कार्यान्वयन, महत्वपूर्ण मूल्य निरीक्षण, या अधिसूचनाओं का उपयोग करेंगे। एक बहुत अच्छा अवलोकन here है।

संपादित करें:

सोचा मैं इस जवाब का उल्लेख करने के लिए टिप्पणी के रूप में, जोड़ना चाहिए: कॉलबैक ब्लॉकों का उपयोग भी एक बहुत ठोस विकल्प है, अपनी आवश्यकताओं पर निर्भर करता है। इस मामले के लिए कौन से समाधान सबसे अच्छे हैं, इस पर बहुत से निर्णय लेने वाले कारक हैं लेकिन यहां एक सामान्य रूपरेखा है जिसका मैं पालन करता हूं।

यदि आपको एक समय में केवल एक पर्यवेक्षक की आवश्यकता है: मैं आम तौर पर ब्लॉक या प्रतिनिधियों का उपयोग करता हूं। मेरी निजी वरीयता यह है कि यदि ब्लॉक केवल एक या दो कॉलबैक हैं तो मैं ब्लॉक का उपयोग करता हूं क्योंकि यह वह जगह है जहां वे चमकता है, लेकिन यदि कुछ संभावित तरीकों से अधिक है तो मैं प्रतिनिधि प्रोटोकॉल का उपयोग करता हूं।

यदि आपको एकाधिक पर्यवेक्षकों की आवश्यकता हो सकती है, तो मैं NSNotificationCenter के माध्यम से अधिसूचनाओं का उपयोग करता हूं।

मैं कुंजी-मूल्य-निरीक्षण का उपयोग करता हूं जब मुझे केवल घटनाओं के बजाय किसी उदाहरण पर विशिष्ट गुणों को देखने की आवश्यकता होती है।

+3

ब्लॉक मत भूलना;) – Ecarrion