अच्छा जवाब आप ऑब्जेक्टिव-सी (आईएसबीएन: 978-1-491-90139-7) के साथ बुक लर्निंग कोकोआ में पा सकते हैं।
मॉड्यूल आपकी परियोजनाओं में फ़ाइलों और पुस्तकालयों को शामिल करने और जोड़ने का एक नया साधन हैं। यह समझने के लिए कि मॉड्यूल कैसे काम करते हैं और उनके क्या लाभ हैं, उद्देश्य-सी के इतिहास में वापस देखना महत्वपूर्ण है और #import स्टेटमेंट जब भी आप उपयोग के लिए एक फ़ाइल शामिल करना चाहते हैं, तो आपके पास आमतौर पर कुछ कोड होगा जो इस तरह दिखता है:
#import "someFile.h"
या चौखटे के मामले में:
#import <SomeLibrary/SomeFile.h>
क्योंकि Objective-C C प्रोग्रामिंग लैंग्वेज का सुपरसेट है, C के #include
स्टेटमेंट पर #import State is मेंटीन एक मामूली रिफाइनमेंट है । #Include स्टेटमेंट बहुत सरल है; यह संकलन के दौरान आपके कोड में शामिल फ़ाइल में पाई जाने वाली सभी चीज़ों की प्रतिलिपि बनाता है। यह कभी-कभी महत्वपूर्ण समस्याएं पैदा कर सकता है। उदाहरण के लिए, कल्पना करें कि आपके पास दो हेडर फाइलें हैं: SomeFileA.h
और SomeFileB.h
; SomeFileA.h
शामिल है SomeFileB.h
, और SomeFileB.h
शामिल हैं SomeFileA.h
। यह एक लूप बनाता है, और कोइम्पिलेटर को भ्रमित कर सकता है। इससे निपटने के लिए, सी प्रोग्रामर को इस प्रकार की घटना के खिलाफ गार्ड को घटित होने से लिखना होगा।
उपयोग करते समय #import
, आपको इस समस्या के बारे में चिंता करने या इससे बचने के लिए हेडर गार्ड लिखने की आवश्यकता नहीं है। हालाँकि, #import
अभी भी एक महिमामंडित कॉपी-एंड-पेस्ट एक्शन है, जिससे अन्य छोटे, लेकिन अभी भी बहुत खतरनाक मुद्दों (जैसे एक सम्मिलित फ़ाइल जिसे आपने अपने कोड में कहीं और घोषित किया है, ओवरराइडिंग के रूप में शामिल है) के बीच धीमी संकलन समय का कारण बनता है।
मॉड्यूल इसके आसपास पाने का एक प्रयास है। वे अब स्रोत कोड में कॉपी-एंड-पेस्ट नहीं हैं, लेकिन इसमें शामिल फ़ाइलों का क्रमबद्ध प्रतिनिधित्व है जो आपके स्रोत कोड में आयात किए जा सकते हैं, केवल जब और जहां उनकी आवश्यकता होती है। मॉड्यूल का उपयोग करके, कोड आमतौर पर तेजी से संकलित करेगा, और #include या का उपयोग करने की तुलना में अधिक सुरक्षित होगा #import
।
किसी फ़्रेमवर्क को आयात करने के पिछले उदाहरण पर लौटना:
#import <SomeLibrary/SomeFile.h>
इस पुस्तकालय को एक मॉड्यूल के रूप में आयात करने के लिए, कोड को बदल दिया जाएगा:
@import SomeLibrary;
यह Xcode का जोड़ा गया बोनस है जो इस परियोजना में SomeLibrary ढांचे को स्वचालित रूप से जोड़ता है। मॉड्यूल आपको केवल उन घटकों को शामिल करने की अनुमति देता है जिनकी आपको वास्तव में अपनी परियोजना में आवश्यकता है। उदाहरण के लिए, यदि आप AwesomeLibrary ढांचे में AwesomeObject घटक का उपयोग करना चाहते हैं, तो आमतौर पर आपको केवल एक टुकड़े का उपयोग करने के लिए सब कुछ आयात करना होगा। हालाँकि, मॉड्यूल का उपयोग करके, आप केवल उस विशिष्ट वस्तु को आयात कर सकते हैं जिसे आप उपयोग करना चाहते हैं:
@import AwesomeLibrary.AwesomeObject;
Xcode 5 में किए गए सभी नए प्रोजेक्ट के लिए, मॉड्यूल डिफ़ॉल्ट रूप से सक्षम हैं। यदि आप पुराने प्रोजेक्ट्स में मॉड्यूल का उपयोग करना चाहते हैं (और आपको वास्तव में करना चाहिए) तो उन्हें प्रोजेक्ट की बिल्ड सेटिंग्स में सक्षम करना होगा। एक बार जब आप ऐसा कर लेते हैं, तो आप अपने कोड में दोनों #import
और @import
कथनों का उपयोग बिना किसी चिंता के कर सकते हैं।