11

मैं आईफोन/आईपैड प्रोग्रामिंग सीख रहा हूं। मेरा मानना ​​है कि मैं एमवीसी की अवधारणा को समझता हूं; मुझे क्या परेशानी हो रही है यह समझ रहा है कि सामान्य आईफोन/आईपैड एप्लिकेशन में से कुछ फाइलें एमवीसी में कैसे फिट होती हैं।AppDelegate फ़ाइल एमवीसी में फिट कहां है?

जब आप "व्यू-आधारित एप्लिकेशन" टेम्पलेट का उपयोग करके एक नया एप्लिकेशन बनाते हैं तो AppDelegate.m और AppDelegate.h फ़ाइल बनाई जाती है।

क्या यह मॉडल, व्यू या कंट्रोलर फ़ाइल है? मुझे लगता है कि यह वास्तव में उनमें से कोई नहीं है। काश मैं एक आरेख या एक प्रक्रिया फ्लोचार्ट देख सकता हूं जो दिखाता है कि एप्लिकेशन में प्रत्येक फ़ाइल किस श्रेणी में आती है।

उत्तर

8

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

मैं प्रत्येक फ़ाइल को एमवीसी में वर्गीकृत करने की कोशिश करने के बारे में बहुत ज्यादा चिंता नहीं करता, कुछ ठीक है, बिल्कुल ठीक नहीं होगा।

1

मैं एक नियंत्रक के रूप AppDelegate देखने क्योंकि कोड

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 
[application setStatusBarHidden:YES withAnimation:NO]; 
return YES; 
} 

AppDelegate उस तरह का मॉडल और विचारों के बीच सेटअप लिंक करने के लिए एक जगह है।
ऐपडिलेगेट में आप कोड डालते हैं जो आपके आवेदन के लिए विशिष्ट है।
देखें और मॉडल किसी अन्य एप्लिकेशन (एक UIView क्लास की तरह) में रहने में सक्षम होना चाहिए, क्योंकि वे एप्लिकेशन विशिष्ट नहीं हैं।
मैक डेस्कटॉप एप्लिकेशन में यह अधिक स्पष्ट है, उस प्रतिनिधि में और कुछ करना है।

2

आवेदन प्रतिनिधि एक नियंत्रक वस्तु है। डिफ़ॉल्ट रूप से, यह मुख्य विंडो का मालिक और नियंत्रक है - जो एक दृश्य है - एक आईओएस ऐप में। ऐप प्रतिनिधि को ऑब्जेक्ट से संदेश प्राप्त होता है - या मॉडलिंग - एप्लिकेशन स्वयं (UIApplication का उदाहरण)। यह एप्लिकेशन ऑब्जेक्ट के बीच मध्यस्थता करता है, जो ऐप और सिस्टम के बीच संपर्क बिंदु है, और ऐप का प्रदर्शन है।

0

यह एक पुराना सवाल है, लेकिन मैंने अभी खुद से यही प्रश्न पूछा है। मुझे लगता है कि AppDelegate क्लास को केवल नियंत्रक के रूप में वर्गीकृत नहीं किया जा सकता है। यह नियंत्रण विंडो को नियंत्रित करता है और इसके रूट नियंत्रक को स्थापित करता है ताकि इसे व्यू कंट्रोलर के रूप में वर्गीकृत किया जा सके (नोट: UIWindow UIView से विरासत में मिलता है)। लेकिन यह ऐप समाप्त होने पर डेटा दृढ़ता जैसे मॉडल से संबंधित कार्यों को भी निष्पादित करता है। इसलिए इसे मॉडल नियंत्रक माना जा सकता है या डेटा एक्सेस लेयर के साथ भी शामिल किया जा सकता है।

यह यूआरएल खोलने के लिए भी जिम्मेदार है। इससे दृश्य परिवर्तन हो सकता है लेकिन निश्चित रूप से मॉडल से संबंधित कार्यों जैसे पार्सिंग, जारी, अद्यतन, प्रमाणीकरण आदि की आवश्यकता होगी। यदि दृश्य/मॉडल केवीओ के माध्यम से बंधे हैं तो मॉडल को अपडेट करने से आवश्यक दृश्य अपडेट हो सकते हैं। मुझे लगता है कि यह एक बेहतर सेटअप होगा। साथ ही, तथ्य यह है कि डिफ़ॉल्ट रूप से सभी कोर डेटा स्टैक को ऐपडिलेगेट में जोड़ा जाता है, इसे केवल व्यू-संबंधित होने से दूर ले जाता है।

यह सोचता है कि यह ऐप से निपटने वाली किसी भी चीज़ के लिए ज़िम्मेदार है क्योंकि इसका कई उद्देश्य हैं। शायद यही कारण है कि डेवलपर्स यहां और किसी भी चीज को फेंकने का अंत कर रहे हैं। यह रूट नियंत्रक, ऐप सेवा परत, और ऐप मॉडल प्रबंधक के अर्थ में ऐप का प्रबंधक है।

चूंकि ऐपडिएगेट ऐप (डेवलपर के लिए) के लिए प्रवेश बिंदु है, इसलिए ऐप के संदर्भ में इसकी बात करना समझ में आता है। ऐप समाप्त हो रहा है, ऐप पृष्ठभूमि में प्रवेश कर रहा है, आदि। हम ऐप के बारे में मॉडल इकाई के रूप में बात कर रहे हैं।

+1

यदि आप चाहते हैं तो आप व्यू कंट्रोलर में डेटा दृढ़ता कर सकते हैं, हालांकि इसका मतलब यह नहीं है कि आपको चाहिए। मेरी राय में, आपको वास्तविक मॉडल ऑब्जेक्ट्स में सूचीबद्ध सभी कार्यों का प्रतिनिधि होना चाहिए। –

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