मच-ओ फ़ाइल प्रारूप (मच ऑब्जेक्ट - .o)
IOS की दुनिया में हर सोर्स फाइल ऑब्जेक्ट फाइल में बदल जाती है - ABI [अबाउट] मच-ओ फाइल [अबाउट] जिसे एक फाइनल एक्जीक्यूटेबल बंडल (जैसे एप्लिकेशन, फ्रेमवर्क ...), फाइल (जैसे लाइब्रेरी ...) में पैक किया जाएगा। और यह व्यवहार द्वारा निर्धारित किया जाता है Mach-O type[के बारे में]
Packageएक निर्देशिका है जो खुद को एक फ़ाइल के रूप में व्यवहार करती है - opaque file। यह उपयोगकर्ता अनुभव के लिए आंतरिक संरचना में कुछ परिवर्तन करने में जटिल है, जो अप्रत्याशित कार्यक्रम व्यवहार का कारण बन सकता है। पैकेज में Document Packageया के साथ प्रयोग किया जाता है Bundle। आप Show Package Contentsएक खोजक में उपयोग कर सकते हैं
Bundleद्विआधारी (निष्पादन योग्य कोड) और उस कोड के लिए संसाधनों को व्यवस्थित करने के लिए एक विशिष्ट संरचना के साथ एक निर्देशिका है (उदाहरण के लिए चित्र, nibs ...)। बंडल में Info.plist[About] फ़ाइल है। डेवलपर अनुभव के लिए बंडल बनाया गया था । साथ ही इसे पैक भी किया जा सकता है। बंडल कई प्रकार के होते हैं:
application bundle - Application target
framework bundleऔर versioned bundleउपप्रकार के रूप में -Framework Target
loadable bundle(उर्फ plug-in bundle) - Bundle target(UI परीक्षण बंडल, यूनिट परीक्षण बंडल)
- अन्य (
dSYM[के बारे में] बंडल)
Application- .ipa, .app[के बारे में] - packaged application bundle- प्रशंसनीय कार्यक्रम।
Tests- packaged loadable bundleजिसका उपयोग बाइनरी का परीक्षण करने के लिए किया जाता है। प्लग-इन आर्किटेक्चर हमें मौजूदा बाइनरी में एक अलग मॉड्यूल के रूप में एक नई कार्यक्षमता (परीक्षण मामलों) को जोड़ने की अनुमति देता है
लाइब्रेरी और फ्रेमवर्क
मार्टिन फाउलर इनवर्जनऑफकंट्रोल पर
लाइब्रेरी अनिवार्य रूप से उन कार्यों का एक समूह है जिसे आप कॉल कर सकते हैं, इन दिनों आमतौर पर कक्षाओं में आयोजित किया जाता है। प्रत्येक कॉल कुछ काम करता है और ग्राहक को नियंत्रण लौटाता है।
एक फ्रेमवर्क कुछ अमूर्त डिज़ाइन का प्रतीक है, जिसमें निर्मित अधिक व्यवहार होता है। इसका उपयोग करने के लिए आपको अपने व्यवहार को फ्रेमवर्क के विभिन्न स्थानों में या तो उप-वर्ग द्वारा या अपनी कक्षाओं में प्लग करके सम्मिलित करने की आवश्यकता होती है। फ़्रेमवर्क कोड तब इन बिंदुओं पर आपके कोड को कॉल करता है। कार्यक्रम का मुख्य नियंत्रण उल्टा है, जो आपको फ्रेमवर्क से दूर ले गया है। (नियंत्रण का उलटा)
आईओएस पर लाइब्रेरी और फ्रेमवर्क
Libraryएक या एक से अधिक आर्किटेक्चर के लिए संकलित [जाँच स्थैतिक या गतिशील] माच-ओ ऑब्जेक्ट फ़ाइलों का एक संग्रह है ।
Static library- .a(उर्फ स्टेटिक आर्काइव लाइब्रेरी, स्टैटिक लिंक्ड शेयर्ड लाइब्रेरी [डॉक] ) - जब आप इसे अपने एप्लिकेशन में जोड़ते हैं तो संकलन समय के दौरान स्टेटिक लिंकर लाइब्रेरी से ऑब्जेक्ट फाइल्स को मर्ज कर लेगा और उन्हें एप्लीकेशन ऑब्जेक्ट फाइलों के साथ एक सिंगल एक्जीक्यूटेबल में पैकेज करेगा। फ़ाइल। नुकसान एक बड़ी आउटपुट फ़ाइल है
Xcode 9.0 से, स्विफ्ट स्टैटिक लाइब्रेरी समर्थित है।
Dynamic library- .dylib(उर्फ डायनेमिक शेयर्ड लाइब्रेरी, शेयर्ड ऑब्जेक्ट, डायनामिकली लिंक्ड लाइब्रेरी [डॉक] ) डायनामिक रूप से लोड या रनटाइम पर ऐप के एग्जीक्यूटेबल से जुड़ी होती है , लेकिन इसमें कॉपी नहीं किया गया है। प्रैक्टिस ऐप के पैकेज में .dylibफ़ाइल के साथ फ्रेमवर्क फ़ोल्डर होगा । सभी iOS और macOS सिस्टम लाइब्रेरी हैं dynamic। नुकसान एक धीमी शुरुआत का समय है क्योंकि सभी गतिशील पुस्तकालयों को कॉपी और लिंक किया जाना चाहिए।
[स्थिर बनाम गतिशील लिंकिंग]
Text-based stub library - .tbd [अबाउट] , यह एक टेक्स्ट स्टब है,dynamic libraryजो एक लक्ष्य डिवाइस पर स्थित है। परिणामस्वरूप आपको एक गतिशील लाइब्रेरी को अपने बंडल में पैकेज नहीं करना चाहिए। इसका आकार प्रभाव है।
Frameworkउर्फ binary framework-.framework एक है not packaged framework bundle(डेवलपर्स को आसानी से हेडर और संसाधनों पर एक नज़र डालने की अनुमति देने के लिए) जिसमें एक संकलित static or dynamicपुस्तकालय, हेडर फाइलें और संसाधन शामिल हैं।
Static framework एक होते हैं static library अपने संसाधनों के साथ पैक।
Dynamic framework होता है dynamic library और संसाधनों। इसके अलावा, गतिशील ढांचे में एक ही बंडल में एक ही गतिशील पुस्तकालय के विभिन्न संस्करण शामिल हो सकते हैं ( versioned bundle)
[स्थिर बनाम गतिशील रूपरेखा]
Embedded frameworkयह dynamic frameworkऐप के सैंडबॉक्स में रहता है। इस प्रकार को कॉमन कोड और संसाधनों को साझा करने के लिए विस्तार के लिए सबसे पहले बनाया गया था । यह तब उपलब्ध है जब परिनियोजन लक्ष्य iOS 8+ है।
Umbrella framework [अलग लक्ष्य] एक ढांचा है जिसमें अन्य ढांचे होते हैं। यह आधिकारिक तौर पर iOS पर समर्थित नहीं है और यही कारण है किडेवलपर्स के लिए उन्हें [आधिकारिक डॉक्टर] बनाने की अनुशंसा नहीं की जाती है । वास्तविकता में यह उप-फ्रेमवर्क (या नेस्टेड फ्रेमवर्क) का एक सेट है। जब आप एक ढांचा बनाते हैं जिसमें एक निर्भरता होती है, तो एक उपभोक्ता (जैसे कि एक ऐप) इस निर्भरता को परियोजना में आपके ढांचे के साथ जोड़ने के लिए जिम्मेदार होता है। एक डेवलपर के रूप में, इस शुल्क को उपभोक्ता से अपने खाते में स्थानांतरित करने का तरीका खोजने की कोशिश करना स्वाभाविक है। परिणामस्वरूप आप ऐसा सोचते हैंUmbrella framework यह बचाव है, लेकिन आमतौर पर यह एक गंभीर मुद्दों की ओर जाता है जिसके प्रबंधन संस्करण और इसे बनाने और समर्थन करने की जटिलता है।
Fake Framework- विस्तार के static libraryसाथ एक बंडल बनाने के लिए विशिष्ट ऑपरेशन का एक परिणाम है .frameworkजो खुद को एक के रूप में व्यवहार करेगा dynamic framework। इस टेक्निक का उपयोग तब किया गया था, जब फ्रेमवर्क बनाने में Xcode ने फ्रेमवर्क का समर्थन नहीं किया था। एक नकली ढांचे की प्राप्ति । Xcode 6 के साथ, Apple ने iOS फ्रेमवर्क समर्थन जोड़ा है।
Modular Framework[अबाउट] -@importयह एक फ्रेमवर्क है जिसमें एक.modulemapफ़ाइल होती है। मॉड्यूल में सबमॉड्यूल हो सकते हैं। मुख्य लाभ यह है कि आप के साथ एक बिल्ड समय बचाते हैंModular Framework ।
Universal Library or Framework(उर्फ फैट) [लिपो] [सकल लक्ष्य] में कई आर्किटेक्चर शामिल हैं। उदाहरण के लिए आपकी रिलीज़ बिल्ड को कुछ आर्क का समर्थन करना चाहिए जिसे आप [ONLY_ACTIVE_ARCH] के माध्यम से विनियमित कर सकते हैंBuild Active Architecture Only
Dependency[के बारे में] आप अपने लक्ष्य के हिस्से के रूप में तीसरे पक्ष के कोड का उपयोग करने में सक्षम हैं। यह आपको बहुत सारे स्रोतों से एक कोड का पुन: उपयोग करने की अनुमति देता है जैसे - एक अन्य परियोजना, एक ही कार्यक्षेत्र में परियोजना, दूसरा लक्ष्य, पुस्तकालय, रूपरेखा आदि।
स्थैतिक पुस्तकालय का निर्माण और उपयोग कैसे करें:
डायनामिक फ्रेमवर्क [स्थैतिक में परिवर्तन] का निर्माण और उपयोग कैसे करें
[Xcode बिल्ड सिस्टम]
[Xcode घटक]
[डायनेमिक लिंकर]