11

मैंने हमेशा सोचा है कि मैं एमवीसी समझ गया हूं, लेकिन हाल ही में, इस विषय पर बहुत अधिक स्टैक ओवरफ़्लो पोस्ट पढ़ने के बाद, मैंने पाया है कि एमवीसी ढांचे की चीजें एक-दूसरे से अलग होती हैं। अधिक विशेष रूप से, जिस तरह देख सकते हैं और मॉडल बातचीत में, वहाँ दो विचारधारायें हो रहा है:एमवीसी: दृश्य और मॉडल कैसे बातचीत करते हैं?

  1. उपयोगकर्ता को देखने के साथ सूचना का आदान प्रदान करते हैं, दृश्य नियंत्रक सूचित करता है, और बदले में नियंत्रक करता है मॉडल के लिए कुछ। जब मॉडल बदलता है, मॉडल नियंत्रक को सूचित करता है, जो बदले में दृश्य को अद्यतन करता है।

  2. दृश्य मॉडल की सदस्यता लेता है। जब मॉडल बदलता है, तो दृश्य को सीधे सूचित किया जाता है कि इसे स्वयं अपडेट करने की आवश्यकता है।

enter image description here

तो मेरे सवाल है: कोको Touch (iOS) में, क्या MVC करने का सबसे अच्छा तरीका है? मैं मुख्य रूप से इन दिनों आईओएस के लिए कोडिंग कर रहा हूं और केवल इस मंच के लिए सर्वोत्तम अभ्यास में रूचि रखता हूं। (मैं कैसे ASP.NET, रेल, रीढ़, आदि बातें करते हैं में दिलचस्पी नहीं है।)

यह अद्भुत होगा कुछ KVO उदाहरण कोड प्रदान किया जा सकता है। धन्यवाद। =)

उत्तर

3

मैंने पाया कि इस मामले पर सबसे अच्छा बुनियादी सिद्धांत स्टैनफोर्ड विश्वविद्यालय में पॉल हैगर्टी नामक एक बहुत ही प्रतिभाशाली शिक्षक द्वारा पढ़ाया जाता है। मैं आईट्यून्स यू पर इस कोर्स को देखने की सलाह देता हूं - एचडी वीडियो में 18 व्याख्यान और पीपीटी फाइलें सीखने के लिए हैं। यहां पाठ्यक्रम वेबसाइट का एक लिंक दिया गया है: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/

मुझे याद है कि वह सामग्री के एमवीसी भाग को बहुत तेज़ी से लेकिन अच्छी तरह से चलाता है, जिससे यह मामला बहुत स्पष्ट हो जाता है। साथ ही, मुझे यह कहना होगा कि विचार के # 1 स्कूल वह है जिसे मैं अधिक सहमत करता हूं।

1

मेरे अनुभव में, (1) ज्यादातर मामलों में उपयोग किया जाना चाहिए।

इन (2) में, चूंकि दृश्य मॉडल का मालिक नहीं है, इसलिए आपको हमेशा मॉडल से परिवर्तनों को प्रस्तुत करने के लिए पास करने की आवश्यकता होती है और यदि दृश्य कई मॉडलों से अपडेट किया जा सकता है, तो आपको इसके लिए अलग कोड लिखना होगा ।

में (1), नियंत्रक से दृश्य को अपडेट करने की विधि कई मॉडलों द्वारा उपयोग की जा सकती है, नियंत्रक के पास मॉडलों का संदर्भ है, इस प्रकार आपको अधिसूचना में कोई भी जानकारी पास करने की आवश्यकता नहीं है।

प्रदर्शन के अनुसार मुझे नहीं पता कि क्या कोई अलग है लेकिन कोड (1) बहुत स्पष्ट होगा।

5

ऐप्पल advocates use of the first method, मुझे विश्वास है।

यह मानक एमवीसी मॉडल (दूसरा दृष्टिकोण) का संशोधित संस्करण है, जहां मॉडल और दृश्य पूरी तरह से अलग हो जाते हैं। व्यक्तिगत रूप से मुझे लगता है कि यह क्लीनर और अधिक एक्स्टेंसिबल है।

  1. तर्क नियंत्रक में केंद्रीकृत है।
  2. मॉडल से ईवेंट को संभालने के लिए कस्टम दृश्य लिखने की कोई आवश्यकता नहीं है। आम तौर पर आप एक कस्टम नियंत्रक लिखेंगे लेकिन एसडीके द्वारा दिए गए दृश्य वर्गों का उपयोग करें। दूसरी विधि के बाद, आपको मॉडल से ईवेंट को संभालने के लिए केवल कस्टम दृश्य बनाना पड़ सकता है।