कोको (एपीआई): Difference between revisions
(TEXT) |
(TEXT) |
||
Line 93: | Line 93: | ||
===ऐप्पलस्क्रिप्टओबीजेसी=== | ===ऐप्पलस्क्रिप्टओबीजेसी=== | ||
मूल रूप से, एप्पलस्क्रिप्ट स्टूडियो का उपयोग सरल कोको अनुप्रयोगों को विकसित करने के लिए किया जा सकता था।<ref>{{cite web|title=AppleScript Studio Programming Guide (Not Recommended): About AppleScript Studio|url=https://developer.apple.com/legacy/library/documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book.html#//apple_ref/doc/uid/20001249-TPXREF101|publisher=Apple, Inc.|access-date=November 20, 2013}}</ref> हालाँकि, हिम तेंदुए के रूप में, इसे पदावनत कर दिया गया है। इसे [[AppleScript|एप्पलस्क्रिप्ट]] | मूल रूप से, एप्पलस्क्रिप्ट स्टूडियो का उपयोग सरल कोको अनुप्रयोगों को विकसित करने के लिए किया जा सकता था।<ref>{{cite web|title=AppleScript Studio Programming Guide (Not Recommended): About AppleScript Studio|url=https://developer.apple.com/legacy/library/documentation/AppleScript/Conceptual/StudioBuildingApps/chapter02/studio_about_book.html#//apple_ref/doc/uid/20001249-TPXREF101|publisher=Apple, Inc.|access-date=November 20, 2013}}</ref> हालाँकि, हिम तेंदुए के रूप में, इसे पदावनत कर दिया गया है। इसे [[AppleScript|एप्पलस्क्रिप्ट]]ओबीजेसी से बदल दिया गया, जो कोको प्राधार का उपयोग करते हुए एप्पलस्क्रिप्ट में प्रोग्रामिंग की अनुमति देता है।<ref>{{cite web |title=AppleScriptObjC Release Notes |url=https://developer.apple.com/library/mac/#releasenotes/ScriptingAutomation/RN-AppleScriptObjC/ |publisher=Apple, Inc. |access-date=November 20, 2013}}</ref> | ||
Line 100: | Line 100: | ||
कोको प्रोग्रामिंग वातावरण को [[PasCocoa|पीएएसकोको]], पीओओबीजेसी, [[कैमलबोन्स]], [[RubyCocoa|रूबीकोको]], और [[डी (प्रोग्रामिंग भाषा)]] / ऑब्जेक्टिव-C ब्रिज जैसे भाषा बंधन की सहायता से अन्य उपकरणों का उपयोग करके अभिगमन किया जा सकता है। | कोको प्रोग्रामिंग वातावरण को [[PasCocoa|पीएएसकोको]], पीओओबीजेसी, [[कैमलबोन्स]], [[RubyCocoa|रूबीकोको]], और [[डी (प्रोग्रामिंग भाषा)]] / ऑब्जेक्टिव-C ब्रिज जैसे भाषा बंधन की सहायता से अन्य उपकरणों का उपयोग करके अभिगमन किया जा सकता है। | ||
<!--Try to organize bindings, alphabetically by language.-->अन्य भाषाओं के लिए उपलब्ध तृतीय-पक्ष अनुबंधन में एप्पलस्क्रिप्ट, [[Clozure CL|क्लोजर CL]], [[Monobjc|मोनोबजक]] और [[NObjective|एनऑब्जेक्टिव]] (C शार्प (प्रोग्रामिंग भाषा), कोको शार्प (CLI), कोकोडाओ और D (प्रोग्रामिंग भाषा)/ऑब्जेक्टिव-C ब्रिज सम्मिलित हैं।<ref>[http://sourceforge.net/projects/cocodao/ Cocodao], bridge to create Cocoa applications in D language.</ref><ref>[http://michelf.com/weblog/2007/d-objc-bridge/ D/Objective-C Bridge], a [[language binding]] mechanism for Cocoa.</ref> [[LispWorks|लिस्पवर्क्स]], [[Object Pascal|ऑब्जेक्ट पास्कल]], कैमलबोन्स ([[Perl|पर्ल]]), पीओओबीजेसी (पायथन (प्रोग्रामिंग भाषा)), [[FPC PasCocoa|FPC पासकोको]] ([[Lazarus (IDE)|लजारस (IDE)]] और [[Free Pascal|फ़्री पास्कल]]), रूबीकोको ([[रूबी (प्रोग्रामिंग भाषा)]])।<ref>[http://osx.hyperjeff.net/Reference/cocoa.php more extensive list of implementations]</ref> | <!--Try to organize bindings, alphabetically by language.-->अन्य भाषाओं के लिए उपलब्ध तृतीय-पक्ष अनुबंधन में एप्पलस्क्रिप्ट, [[Clozure CL|क्लोजर CL]], [[Monobjc|मोनोबजक]] और [[NObjective|एनऑब्जेक्टिव]] (C शार्प (प्रोग्रामिंग भाषा), कोको शार्प (CLI), कोकोडाओ और D (प्रोग्रामिंग भाषा)/ऑब्जेक्टिव-C ब्रिज सम्मिलित हैं।<ref>[http://sourceforge.net/projects/cocodao/ Cocodao], bridge to create Cocoa applications in D language.</ref><ref>[http://michelf.com/weblog/2007/d-objc-bridge/ D/Objective-C Bridge], a [[language binding]] mechanism for Cocoa.</ref> [[LispWorks|लिस्पवर्क्स]], [[Object Pascal|ऑब्जेक्ट पास्कल]], कैमलबोन्स ([[Perl|पर्ल]]), पीओओबीजेसी (पायथन (प्रोग्रामिंग भाषा)), [[FPC PasCocoa|FPC पासकोको]] ([[Lazarus (IDE)|लजारस (IDE)]] और [[Free Pascal|फ़्री पास्कल]]), रूबीकोको ([[रूबी (प्रोग्रामिंग भाषा)]])।<ref>[http://osx.hyperjeff.net/Reference/cocoa.php more extensive list of implementations]</ref> [[MacRuby|मैकरूबी]] नाम की एक रूबी भाषा का कार्यान्वयन, जो एक पुल तंत्र की आवश्यकता को दूर करता है, पूर्व में एप्पल द्वारा विकसित किया गया था, जबकि Nu (प्रोग्रामिंग भाषा) एक [[लिस्प (प्रोग्रामिंग भाषा)]] जैसी भाषा है जो ऑब्जेक्टिव-C ऑब्जेक्ट प्रतिरूप का सीधे उपयोग करती है, और इस प्रकार बंधन की आवश्यकता के बिना कोको ढांचे का उपयोग कर सकते हैं। | ||
[[MacRuby|मैकरूबी]] नाम की एक रूबी भाषा का कार्यान्वयन, जो एक पुल तंत्र की आवश्यकता को दूर करता है, पूर्व में एप्पल द्वारा विकसित किया गया था, जबकि Nu (प्रोग्रामिंग भाषा) एक [[लिस्प (प्रोग्रामिंग भाषा)]] जैसी भाषा है जो ऑब्जेक्टिव-C ऑब्जेक्ट प्रतिरूप का सीधे उपयोग करती है, और इस प्रकार बंधन की आवश्यकता के बिना कोको ढांचे का उपयोग कर सकते हैं। | |||
=== अन्य कार्यान्वयन === | === अन्य कार्यान्वयन === |
Revision as of 03:35, 5 March 2023
Developer(s) | Apple Inc. |
---|---|
Written in | C, C++, Objective-C, Swift |
Operating system | macOS |
Type | Software framework |
License | Proprietary with some open source components[citation needed] |
Website | Apple Developer |
कोको एप्पल की प्राकृत वस्तु अभिमुखित अप्लिकेशन प्रोग्रामिंग अंतरफलक (API) है, जो इसके डेस्कटॉप कंप्यूटर संचालन प्रणाली मैक ओएस के लिए है।
कोको में फाउंडेशन किट, एप्लिकेशन किट और केंद्र भाग डेटा प्राधार सम्मिलित हैं, जैसा कि इसमें सम्मिलित है कोको.एच
प्रवेशिका संचिका, और उनके द्वारा सम्मिलित पुस्तकालय और प्राधार, जैसे C मानक पुस्तकालय और ऑब्जेक्टिव-C कार्यावधि।[1]
कोको अनुप्रयोगों को सामान्यतः प्रोग्रामिंग भाषाओं ऑब्जेक्टिव C या स्विफ्ट (प्रोग्रामिंग भाषा) का उपयोग करके एप्पल द्वारा प्रदान किए गए विकास टूल, विशेष रूप से एक्स कूट (पूर्व में परियोजना बिल्डर) प्रयोक्ता इंटरफ़ेस बिल्डर (अब एक्स कूट का हिस्सा) का उपयोग करके विकसित किया जाता है। हालाँकि, कोको प्रोग्रामिंग वातावरण को अन्य उपकरणों का उपयोग करके अभिगमन किया जा सकता है। एक साधारण पाठ संपादक में ऑब्जेक्टिव-C कोको प्रोग्राम लिखना भी संभव है और कमांड लाइन या मेकफाइल (सॉफ्टवेयर) से GNU संकलक संग्रह (GCC) या क्लैंग के साथ इसे स्वतः रूप से बनाना संभव है।
अंतिम प्रयोक्ता के लिए, कोको अनुप्रयोग प्रक्रिया सामग्री वे हैं जो कोको प्रोग्रामिंग वातावरण का उपयोग करके लिखे गए हैं। इस तरह के अनुप्रयोगों में सामान्यतः एक परिचित रूप और अनुभव होता है, क्योंकि कोको प्रोग्रामिंग वातावरण बहुत सारे सामान्य उपयोगकर्ता अंतरापृष्ठ (जैसे बटन, स्क्रॉल बार, आदि) प्रदान करता है, और एप्पल के मानव इंटरफ़ेस दिशानिर्देशों का पालन करने के लिए एक एप्लिकेशन के कई पहलुओं को स्वचालित करता है।
आईओएस,आईपैड ओएस, टीवीओएस और वॉचओएस के लिए कोको टच नामक एक समान एपीआई उपस्थित है, जिसमें मुद्रा पहचान, एनिमेशन और ग्राफिकल नियंत्रण तत्वों का एक अलग सम्मुच्चय सम्मिलित है। इसका उपयोग एप्पल उपकरणों जैसे आईफोन,आईपॉड टच, आईपैड, एप्पल टीवी और एप्पल वॉच के लिए एप्लिकेशन सॉफ़्टवेयर में किया जाता है।
इतिहास
कोको 1980 और 1990 के दशक में नेक्स्ट द्वारा विकसित नेक्स्टस्टेप और ओपनस्टेप प्रोग्रामिंग वातावरण से कई सॉफ्टवेयर ढांचा (मुख्य रूप से ऐप किट और आधार किट) के वंश को जारी रखता है। एप्पल ने दिसंबर 1996 में नेक्स्ट का अधिग्रहण किया, और बाद में रैप्सोडी (संचालन प्रणाली) संचालन प्रणाली पर काम करना प्रारम्भ कर दिया, जो ओपनस्टेप का प्रत्यक्ष उत्तराधिकारी था। ब्लू बॉक्स नामक उत्कृष्ट मैक ओएस अनुप्रयोगों के लिए इसका अनुकरण आधार होना था। पुस्तकालयों और बाइनरी समर्थन के ओपनस्टेप आधार को येलो बॉक्स कहा गया। रैप्सोडी मैक ओएस एक्स में विकसित हुआ, और येलो बॉक्स कोको बन गया। इस प्रकार, कोको कक्षाएं NS अक्षरों से प्रारम्भ होती हैं, जैसे एनएसस्ट्रिंग या एनएसऐरे। ये ओपनस्टेप प्राधार, नेक्स्टस्टेप के लिए मूल स्वामित्व शब्द के लिए हैं।[2]
ओपनस्टेप को विकसित करने में किए गए अधिकांश कार्य मैक ओएस X को विकसित करने के लिए लागू किए गए थे, कोको सबसे अधिक दिखाई देने वाला भाग था। हालाँकि, मतभेद उपस्थित हैं। उदाहरण के लिए, नेक्स्टस्टेप और ओपनस्टेप ने पाठ्य भाग और आलेखिकी के ऑन-स्क्रीन प्रदर्श के लिए प्रदर्श पोस्टस्क्रिप्ट का प्रयोग किया, जबकि कोको एप्पल के क्वार्ट्ज (आलेखिकी परत) पर निर्भर करता है (जो संवहन दस्तावेज़ स्वरूप (PDF) प्रतिबिंबन प्रतिरूप का उपयोग करता है, लेकिन इसकी अंतर्निहित तकनीक का नहीं)। कोको में इंटरनेट समर्थन का एक स्तर भी है, जिसमें एनएसयूआरएल और वेबकिट HTML कक्षाएं और अन्य सम्मिलित हैं, जबकि ओपनस्टेप के पास एनएसफाइलहैंडल क्लासेस और बर्कले सॉकेट के माध्यम से प्रबंधित संजाल संश्रय के लिए केवल अल्पविकसित समर्थन था।
परिणामी सॉफ्टवेयर ढांचे को शीघ्रता के लिए कोको नाम मिला, क्योंकि नाम पहले से ही एप्पल द्वारा ट्रेडमार्क (व्यापार चिह्न) किया गया था। नाम के इस वर्तमान उपयोग से पहले कई वर्षों तक, एप्पल के कोको ट्रेडमार्क की उत्पत्ति बच्चों के लिए एक बहुमाध्यमिक परियोजना अभिकल्पना एप्लिकेशन के नाम के रूप में हुई थी। एप्लिकेशन को मूल रूप से एप्पल अग्रिम प्रौद्योगिकियों ग्रुप में किडसिम नाम से विकसित किया गया था और फिर इसका नाम बदल दिया गया और कोको के रूप में ट्रेडमार्क किया गया। पीटर जेन्सेन द्वारा गढ़ा गया नाम, जिसे एप्पल के लिए कोको विकसित करने के लिए काम पर रखा गया था, का उद्देश्य बच्चों के लिए जावा को विकसित करना था, क्योंकि यह वेब पेजों में अंत: स्थापित था।[3] इस सॉफ़्टवेयर ढांचे के लिए एक नया ट्रेडमार्क पंजीकृत करते समय होने वाली देरी से बचने के लिए ट्रेडमार्क, और कोको नाम का इस प्रकार पुन: उपयोग किया गया था। स्टीव जॉब्स की एप्पल में वापसी के बाद हुए एक युक्तिकरण (अर्थशास्त्र) में से एक में मूल कोको कार्यक्रम को एप्पल में बंद कर दिया गया था। इसके बाद इसे तीसरे पक्ष को अनुज्ञप्ति दी गई और 2014 तक स्टेजकास्ट निर्माता के रूप में विपणन किया गया।
स्मृति प्रबंधन
कोको पर्यावरण की एक विशेषता इसकी गतिशील रूप से आवंटित स्मृति के प्रबंधन के लिए सुविधा है। फाउंडेशन किट की एनएसओब्जेक्ट क्लास, जिसमें से अधिकांश वर्ग, विक्रेता और उपयोगकर्ता दोनों व्युत्पन्न होते हैं, स्मृति प्रबंधन के लिए एक संदर्भ गिनती योजना लागू करता है। ऑब्जेक्ट जो एनएसओब्जेक्ट रूट क्लास से प्राप्त होते हैं, रीटेन
और रिलीज
संदेश प्रतिक्रिया देते हैं, और एक गिनती बनाए रखते हैं। रीटेनकाउंट
शीर्षक वाली एक विधि उपस्थित है, लेकिन इसके नाम के विपरीत, सामान्यतः किसी वस्तु की सटीक प्रतिधारित संख्या नहीं लौटाएगा। यह मुख्य रूप से प्रणाली-स्तरीय उद्देश्यों के लिए उपयोग किया जाता है। एप्पल द्वारा इसे स्वतः रूप से आमंत्रित करने की अनुशंसा नहीं की जाती है।
अलोक
या कॉपी
के साथ बनाई गई नई आवंटित वस्तु एक की गिनती प्रतिधारित है। उस ऑब्जेक्ट को एक रिटेन मैसेज भेजने से रिटेन काउंट बढ़ जाता है, जबकि इसे रिलीज़ मैसेज भेजने से रिटेन काउंट घट जाता है। जब किसी ऑब्जेक्ट की रिटेन काउंट शून्य तक पहुँच जाता है, तो इसे C++ डिस्ट्रक्टर के समान प्रक्रिया द्वारा हटा दिया जाता है।डीअलोक
बुलाए जाने की प्रत्याभुति नहीं है।
ऑब्जेक्टिव-C 2.0 से प्रारम्भ करते हुए, ऑब्जेक्टिव-C कार्यावधि ने एक वैकल्पिक कचरा संग्रहण लागू किया, जो अब अप्रचलित है और स्वचालित संदर्भ गिनती (ARC) के पक्ष में बहिष्कृत है। इस प्रतिरूप में, कार्यावधि ने कोको रेफरेंस काउंटिंग ऑपरेशंस जैसे रिटेन और रिलीज को नो-ऑप्स में बदल दिया। ऑब्जेक्टिव-C 2.0 के आईओएस कार्यान्वयन पर कचरा संग्रहकर्ता उपस्थित नहीं है। ऑब्जेक्टिव-C में कचरा संग्रह कम प्राथमिकता वाले बैकग्राउंड थ्रेड पर चलता है, और उपयोगकर्ता अनुभव को उत्तरदायी बनाए रखने के इरादे से कोको के उपयोगकर्ता ईवेंट पर रोक लगा सकता है। पुराने गारबेज संग्राहक अभी भी मैक ओएस X संस्करण 10.13 पर उपलब्ध है, लेकिन एप्पल द्वारा प्रदान किया गया कोई भी एप्लिकेशन इसका उपयोग नहीं करता है।
2011 में, एलएलवीएम कंपाइलर ने ऑटोमैटिक संदर्भ काउंटिंग (ARC) को प्रारम्भ किया, जो ऑब्जेक्टिव-C स्रोत कूट का स्थिर विश्लेषण करके और आवश्यकतानुसार संदेशों को बनाए रखने और जारी करने के लिए पारंपरिक कचरा समाहर्ता को बदल देता है।
मुख्य चौखटे
कोको में तीन ऑब्जेक्टिव-C ऑब्जेक्ट पुस्तकालय होते हैं जिन्हें आवेदन ढांचा कहा जाता है। प्राधार कार्यात्मक रूप से पुस्तकालय (कंप्यूटर विज्ञान) के समान हैं, एक संकलित वस्तु जिसे कार्यावधि पर प्रोग्राम के एड्रेस स्पेस में गतिशील रूप से उद्भार किया जा सकता है, लेकिन प्राधार संबंधित संसाधनों, हेडर फाइलों और प्रलेखन को जोड़ता है। कोको ढांचे को एक प्रकार के बंडल (मैक ओएस) के रूप में कार्यान्वित किया जाता है, जिसमें मानक स्थानों में उपरोक्त वस्तु सम्मिलित होते हैं।
- फाउंडेशन किट (फाउंडेशन), पहली बार नेक्स्टस्टेप 3 पर एंटरप्राइज़ ऑब्जेक्ट प्राधार में दिखाई दिया।[4] इसे ओपनस्टेप कार्य के हिस्से के रूप में विकसित किया गया था, और बाद में ओपनस्टेप के ऐपकिट के लिए आधार बन गया जब वह प्रणाली 1994 में जारी किया गया था। मैक ओएस पर, आधार कोर फाउंडेशन पर आधारित है। फाउंडेशन एक सामान्य वस्तु-उन्मुख पुस्तकालय है जो स्ट्रिंग (कंप्यूटर विज्ञान) और मूल्य प्रहस्तन, कंटेनर (डेटा संरचना) और पुनरावृत्ति, वितरित कंप्यूटिंग, घटना पाश (रन लूप) और अन्य फ़ंक्शन प्रदान करता है जो सीधे ग्राफिकल यूज़र इंटरफ़ेस से बंधे नहीं हैं। एनएस उपसर्ग, सभी वर्गों और ढांचे में स्थिर (प्रोग्रामिंग) के लिए उपयोग किया जाता है, कोको की ओपेनस्टेप विरासत से आता है, जिसे नेक्स्ट और सन माइक्रोप्रणाली्स द्वारा संयुक्त रूप से विकसित किया गया था।
- एप्लिकेशन किट (ऐपकिट) सीधे मूल नेक्स्टस्टेप एप्लिकेशन किट से ली गई है। इसमें कूट प्रोग्राम सम्मिलित हैं जिनका उपयोग आलेखी प्रयोक्ता अंतराफलक बनाने और परस्पर प्रभाव करने के लिए किया जा सकता है। ऐपकिट फाउंडेशन के शीर्ष पर बनाया गया है, और उसी एनएस उपसर्ग का उपयोग करता है।
- कोर डेटा फाउंडेशन और कोको के साथ सम्मिलित वस्तु दृढ़ता ढांचा है और कोको.एच में पाया जाता है।[1]
कोको वास्तुकला का एक महत्वपूर्ण हिस्सा इसका व्यापक दृश्य प्रतिरूप है। यह एक एप्लिकेशन प्राधार के लिए पारंपरिक प्रणालियों के साथ आयोजित किया गया है, लेकिन यह क्वार्ट्ज (आलेखिकी परत) द्वारा प्रदान किए गए पोर्टेबल डॉक्यूमेंट फॉर्मेट (पीडीएफ) ड्राइंग प्रतिरूप पर आधारित है। यह परिशिष्ट भाग-जैसी ड्राइंग कमांड का उपयोग करके कस्टम ड्राइंग सामग्री बनाने की अनुमति देता है, जो स्वचालित प्रिंटर समर्थन आदि की भी अनुमति देता है। चूंकि कोको प्राधार सभी क्लिपिंग, स्क्रॉलिंग, स्केलिंग और ड्राइंग आलेखिकी के अन्य कामों का प्रबंधन करता है, इसलिए प्रोग्रामर बुनियादी ढांचे को लागू करने से स्वतंत्र हो जाता है और किसी एप्लिकेशन की सामग्री के अनूठे पहलुओं पर ध्यान केंद्रित कर सकता है।
प्रतिरूप-दृश्य-नियंत्रक
ज़ेरॉक्स पार्क में स्मॉलटाक टीमें अंततः एक अभिकल्पना धारणा पर व्यवस्थित हो गईं जिससे आसान विकास और उच्च कूट पुन: उपयोग हुआ। नामांकित प्रतिरूप-व्यू-नियंत्रक (MVC), अवधारणा एक एप्लिकेशन को इंटरेक्टिंग ऑब्जेक्ट क्लास के तीन सम्मुच्चयों में विभाजित करती है:
- प्रतिरूप वर्ग समस्या कार्यक्षेत्र डेटा और संचालन का प्रतिनिधित्व करते हैं (जैसे कि लोगों/विभागों/बजटों की सूची; अनुभागों/अनुच्छेदों/शैलीकृत पाठ के फुटनोट वाले दस्तावेज़)।
- देखें कक्षाएं मानव-कंप्यूटर परस्पर क्रिया के लिए दृश्य प्रतिनिधित्व और शक्यता को लागू करती हैं (जैसे कैप्शन वाले आइकन के स्क्रॉल करने योग्य ग्रिड और संभावित संचालन के पॉप-अप मेनू)।
- नियंत्रक क्लासेस में तर्क होता है जो प्रतिरूप डेटा को व्यू रिप्रेजेंटेशन के रूप में बहिस्तल करता है, प्रतिरूप ऑपरेशंस के लिए अफोर्डेंस-आरंभ किए गए यूजर एक्शन को प्रतिचित्र करता है, और दोनों को समकालिक करने के लिए स्टेट को बनाए रखता है।
कोको का अभिकल्पना MVC सिद्धांतों का एक निष्पक्ष, लेकिन बिल्कुल कठोर अनुप्रयोग नहीं है। ओपनस्टेप के अनुसार, प्रदान की गई अधिकांश कक्षाएं या तो उच्च-स्तरीय व्यू क्लासेस (ऐपकिट में) थीं या एनएसस्ट्रिंग जैसे अपेक्षाकृत निम्न-स्तरीय प्रतिरूप वर्गों में से एक थीं। समान MVC प्रणाली की तुलना में, ओपनस्टेप में एक सुदृढ़ प्रतिरूप परत का अभाव था। उदाहरण के लिए, कोई स्टॉक क्लास दस्तावेज़ का प्रतिनिधित्व नहीं करता है। कोको में संक्रमण के दौरान, डेस्कटॉप अनुप्रयोगों के लिए सामान्य कार्यक्षमता प्रदान करने के लिए कई पूर्व-बेल्लित वर्गों को प्रस्तुत करते हुए, प्रतिरूप परत का विस्तार किया गया था।
मैक ओएस एक्स 10.3 में, ऐप्पल ने वर्गों के एनएससीनियंत्रक परिवार को प्रारम्भ किया, जो नियंत्रक परत के लिए पूर्वनिर्धारित व्यवहार प्रदान करते हैं। इन वर्गों को कोको अनुबंधन प्रणाली का हिस्सा माना जाता है, जो महत्वपूर्ण मूल्य अवलोकन और महत्वपूर्ण मूल्य अनुबंधन जैसी विज्ञप्ति का व्यापक उपयोग करता है। शब्द 'बाध्यकारी' दो वस्तुओं प्रायः एक दृश्य और एक नियंत्रक के बीच संबंध को संदर्भित करता है। अनुबंधन, विकासक को ठीक-ठाक व्यवहार करने के स्थान पर घोषणात्मक संबंधों पर अधिक ध्यान केंद्रित करने की अनुमति देती है।
मैक ओएस X 10.4 के आगमन के साथ, एप्पल ने कोर डेटा प्राधार को प्रारम्भ करके इस नींव को और आगे बढ़ाया, जो प्रतिरूप परत में परिवर्तन अनुवर्तन और दृढ़ता को मानकीकृत करता है। असल में, ढांचा एप्लिकेशन डेटा में परिवर्तन करने की प्रक्रिया को बहुत सरल करता है, जब आवश्यक हो तो परिवर्तनों को पूर्ववत करता है, डेटा को डिस्क में सहेजता है, और इसे वापस पढ़ता है।
सभी तीन MVC कार्यक्षेत्र के लिए प्राधार समर्थन प्रदान करने में, एप्पल का लक्ष्य बॉयलरप्लेट या ग्लू कूट की मात्रा को कम करना है, जिसे विकासकों को एप्लिकेशन-विशिष्ट सुविधाओं पर समय बिताने के लिए संसाधनों को मुक्त करके लिखना है।
लेट अनुबंधन
अधिकांश वस्तु अभिमुखित भाषाओं में, मेमोरी में कूट के पॉइंटर द्वारा विधियों को कॉल को भौतिक रूप से दर्शाया जाता है। यह किसी एप्लिकेशन के अभिकल्पना को प्रतिबंधित करता है क्योंकि विशिष्ट कमांड हैंडलिंग क्लासेस की आवश्यकता होती है, सामान्यतः चेन-ऑफ-रिस्पॉन्सिबिलिटी पैटर्न के अनुसार व्यवस्थित किया जाता है। जबकि कोको अधिकांश भाग के लिए इस दृष्टिकोण को प्रतिधारित रखता है, ऑब्जेक्टिव-सी की देर से बाइंडिंग अधिक लचीलापन खोलती है।
उद्देश्य-C के अनुसार, विधियों को एक चयनकर्ता द्वारा दर्शाया जाता है, एक स्ट्रिंग जो कॉल करने की विधि का वर्णन करती है। जब कोई संदेश भेजा जाता है, तो चयनकर्ता को ऑब्जेक्टिव-C कार्यावधि में भेजा जाता है, उपलब्ध विधियों की सूची से मिलान किया जाता है, और विधि के कार्यान्वयन को कहा जाता है। चूंकि चयनकर्ता पाठ डेटा है, यह इसे एक संचिका में सहेजा जा सकता है, एक संजाल पर या प्रक्रियाओं के बीच प्रसारित किया जा सकता है, या अन्य तरीकों से प्रहस्तन किया जा सकता है। विधि के कार्यान्वयन को कार्यावधि पर देखा जाता है, संकलन समय पर नहीं। इसके लिए एक छोटा प्रदर्शन दंड है,[5] लेकिन देर से बाध्यकारी एक ही चयनकर्ता को विभिन्न कार्यान्वयनों को संदर्भित करने की अनुमति देता है।
इसी तरह के टोकन से, कोको कुंजी-मूल्य कूटिंग (KVC) नामक एक व्यापक डेटा प्रहस्तन विधि प्रदान करता है।[6] यह डेटा के एक टुकड़े या किसी वस्तु की संपत्ति को कार्यावधि पर नाम से देखने या बदलने की अनुमति देता है। संपत्ति का नाम मूल्य की कुंजी के रूप में कार्य करता है। पारंपरिक भाषाओं में, यह देर से बंधना असंभव है। केवीसी विशाल अभिकल्पना लचीलेपन की ओर ले जाता है। एक वस्तु के प्रकार को ज्ञात करने की आवश्यकता नहीं है, फिर भी केवीसी का उपयोग करके उस वस्तु की किसी भी संपत्ति की खोज की जा सकती है। इसके अलावा, इस प्रणाली को कुछ कोको शब्द कुंजी-मूल्य अवलोकन (केवीओ) का उपयोग करके विस्तारित करके, पूर्ववत करने के लिए स्वत: समर्थन प्रदान किया जाता है।
विलंब स्थैतिक अनुबंधन स्थैतिक एवं गतिक अनुबंधन के बीच कहीं अनुबंधन का एक प्रकार है। प्रोग्राम चलाने से पहले नामों की अनुबंधन को स्थैतिक (प्रारंभिक) कहा जाता है; प्रोग्राम रन के रूप में निष्पादित अनुबंधन गतिशील (देर से या कल्पित) हैं।
समृद्ध वस्तुएं
कोको की सबसे उपयोगी विशेषताओं में से एक शक्तिशाली आधार वस्तु है जो प्रणाली आपूर्ति करता है। उदाहरण के लिए, फाउंडेशन कक्षाओं पर विचार करें एनएसस्ट्रिंग
और एनएसएट्रीब्यूटेडस्ट्रिं
, जो यूनिकूट स्ट्रिंग (कंप्यूटर विज्ञान) प्रदान करते हैं, और एनएसटेक्स्ट
ऐपकिट में प्रणाली, जो प्रोग्रामर को GUI में स्ट्रिंग ऑब्जेक्ट रखने की अनुमति देता है।
एनएसटेक्स्ट
और इसके संबंधित वर्गों का उपयोग स्ट्रिंग्स को प्रदर्शित करने और संपादित करने के लिए किया जाता है। सम्मिलित वस्तुओं का संग्रह एक आवेदन को एक साधारण एकल-पंक्ति पाठ प्रविष्टि क्षेत्र से पूर्ण बहु-पृष्ठ, बहु-स्तंभ पाठ लेआउट स्कीमा में पूर्ण प्रस्तुतेवर मुद्रण सुविधाओं जैसे कर्निंग, लिगचर (मुद्रण), चलने वाले पाठ के साथ कुछ भी लागू करने की अनुमति देता है। स्वेच्छाचारी आकार के आसपास, क्रमावर्तन, पूर्ण यूनिकूट समर्थन, और स्थानिक एंटी-अलियास ग्लिफ़ रेंडरिंग। अनुच्छेद अभिन्यास स्वचालित रूप से या उपयोगकर्ता द्वारा नियंत्रित किया जा सकता है, एक अंतर्निहित शासक वस्तु का उपयोग करके जिसे किसी भी पाठ दृश्य से जोड़ा जा सकता है। भाषा शब्दकोशों के प्रणाली-वाइड सम्मुच्चय का उपयोग करते हुए, वर्तनी जाँच स्वचालित है। असीमित पूर्ववत समर्थन अंतर्निहित है। केवल अंतर्निहित सुविधाओं का उपयोग करके, कूट की 10 पंक्तियों के रूप में एक पाठ संपादक एप्लिकेशन लिख सकता है। नए नियंत्रक वस्तु के साथ, यह शून्य की ओर गिर सकता है।
जब विस्तारण की आवश्यकता होती है, तो कोको का ऑब्जेक्टिव-C का उपयोग इसे एक सीधा काम बनाता है। ऑब्जेक्टिव-C में कैटेगरी की अवधारणा सम्मिलित है, जो उपस्थिता क्लास को इन-प्लेस संशोधित करने की अनुमति देता है। ढांचे में मूल कक्षाओं में किसी भी बदलाव के बिना, या यहां तक कि इसके स्रोत तक पहुंच के बिना किसी श्रेणी में कार्यक्षमता को पूरा किया जा सकता है। अन्य सामान्य भाषाओं में, इसी कार्य के लिए अतिरिक्त सुविधाओं का समर्थन करने के लिए एक नया उपवर्ग प्राप्त करने की आवश्यकता होती है, और फिर मूल वर्ग के सभी उदाहरणों को नए उपवर्ग के उदाहरणों से बदलना पड़ता है।
कार्यान्वयन और अनुबंधन
कोको प्राधार ऑब्जेक्टिव-C में लिखे गए हैं। कोको प्राधार के लिए जावा भाषा बंधन (जिसे जावा ब्रिज कहा जाता है) को ऑब्जेक्टिव-C को एक अधिक लोकप्रिय भाषा के साथ बदलने के उद्देश्य से भी उपलब्ध कराया गया था।[7] लेकिन ये अनुबंधन कोको विकासकों के बीच अलोकप्रिय थे और कोको के संदेश पासिंग शब्दार्थ ने जावा जैसी स्थैतिकतः-टाइप की गई भाषा में अच्छी तरह से अनुवाद नहीं किया।[8] कोको की कार्यावधि अनुबंधन की आवश्यकता का अर्थ है कि कोको की कई प्रमुख विशेषताएं जावा के साथ उपलब्ध नहीं हैं। 2005 में, एप्पल ने घोषणा की कि जावा ब्रिज को पदावनत किया जाना था, जिसका अर्थ है कि 10.4 के बाद के मैक ओएस संस्करणों में कोको में जोड़े गए फीचर कोको-जावा प्रोग्रामिंग इंटरफ़ेस में नहीं जोड़े जाएंगे।
एप्पल वर्ल्डवाइड विकासकों कॉन्फ्रेंस (WWDC) 2014 में, एप्पल ने स्विफ्ट (प्रोग्रामिंग लैंग्वेज) नाम की एक नई प्रोग्रामिंग लैंग्वेज प्रस्तुत की, जिसका उद्देश्य ऑब्जेक्टिव-C को बदलना है।[9]
ऐप्पलस्क्रिप्टओबीजेसी
मूल रूप से, एप्पलस्क्रिप्ट स्टूडियो का उपयोग सरल कोको अनुप्रयोगों को विकसित करने के लिए किया जा सकता था।[10] हालाँकि, हिम तेंदुए के रूप में, इसे पदावनत कर दिया गया है। इसे एप्पलस्क्रिप्टओबीजेसी से बदल दिया गया, जो कोको प्राधार का उपयोग करते हुए एप्पलस्क्रिप्ट में प्रोग्रामिंग की अनुमति देता है।[11]
अन्य बंधन
कोको प्रोग्रामिंग वातावरण को पीएएसकोको, पीओओबीजेसी, कैमलबोन्स, रूबीकोको, और डी (प्रोग्रामिंग भाषा) / ऑब्जेक्टिव-C ब्रिज जैसे भाषा बंधन की सहायता से अन्य उपकरणों का उपयोग करके अभिगमन किया जा सकता है।
अन्य भाषाओं के लिए उपलब्ध तृतीय-पक्ष अनुबंधन में एप्पलस्क्रिप्ट, क्लोजर CL, मोनोबजक और एनऑब्जेक्टिव (C शार्प (प्रोग्रामिंग भाषा), कोको शार्प (CLI), कोकोडाओ और D (प्रोग्रामिंग भाषा)/ऑब्जेक्टिव-C ब्रिज सम्मिलित हैं।[12][13] लिस्पवर्क्स, ऑब्जेक्ट पास्कल, कैमलबोन्स (पर्ल), पीओओबीजेसी (पायथन (प्रोग्रामिंग भाषा)), FPC पासकोको (लजारस (IDE) और फ़्री पास्कल), रूबीकोको (रूबी (प्रोग्रामिंग भाषा))।[14] मैकरूबी नाम की एक रूबी भाषा का कार्यान्वयन, जो एक पुल तंत्र की आवश्यकता को दूर करता है, पूर्व में एप्पल द्वारा विकसित किया गया था, जबकि Nu (प्रोग्रामिंग भाषा) एक लिस्प (प्रोग्रामिंग भाषा) जैसी भाषा है जो ऑब्जेक्टिव-C ऑब्जेक्ट प्रतिरूप का सीधे उपयोग करती है, और इस प्रकार बंधन की आवश्यकता के बिना कोको ढांचे का उपयोग कर सकते हैं।
अन्य कार्यान्वयन
कोको ढांचे के प्रमुख हिस्सों के खुले स्रोत कार्यान्वयन भी हैं, जैसे जीएनयूस्टेप और कोकोट्रॉन,[15] जो माइक्रोसॉफ़्ट विंडोज़ और लिनक्स जैसे अन्य संचालन प्रणाली को लक्षित करने के लिए क्रॉस-प्लेटफॉर्म कोको एप्लिकेशन परिवर्धन की अनुमति देता है।
यह भी देखें
संदर्भ
- ↑ 1.0 1.1 Mac Technology Overview: OS X Frameworks. Developer.apple.com. Retrieved on September 18, 2013.
- ↑ Amit Singh (June 19, 2006). Mac OS X Internals: A Systems Approach. ISBN 0-321-27854-2.
Cocoa is an important inheritance from NeXT, as indicated by .. the "NS" prefix
- ↑ Mardesich, Jodi (April 14, 1997). "A Sour Note in Apple's Rhapsody Once-Loyal Software Writers Wary of New OS as Crucial Conference Looms". No. Morning Final. San Jose Mercury News. Retrieved August 13, 2015.
- ↑ HybridWorld. Cilinder.be. Retrieved on September 18, 2013.
- ↑ Wikibooks - Some Objective-C advantages
- ↑ "Key-Value Coding Programming Guide". Retrieved September 27, 2021.
- ↑ Steve Klingsporn (2003). "Writing Cocoa Apps in Java". MacTech. 19 (12).
- ↑ "Using the Java Bridge" (PDF). Apple Inc.
Because Java is a strongly typed language, it requires more information about the classes and interfaces it manipulates at compile time. Therefore, before using Objective-C classes as Java ones, a description of them has to be written and compiled.
- ↑ "Apple's top secret Swift language grew from work to sustain Objective-C, which it now aims to replace".
- ↑ "AppleScript Studio Programming Guide (Not Recommended): About AppleScript Studio". Apple, Inc. Retrieved November 20, 2013.
- ↑ "AppleScriptObjC Release Notes". Apple, Inc. Retrieved November 20, 2013.
- ↑ Cocodao, bridge to create Cocoa applications in D language.
- ↑ D/Objective-C Bridge, a language binding mechanism for Cocoa.
- ↑ more extensive list of implementations
- ↑ Cocotron, free software implementation of Cocoa.
ग्रन्थसूची
- Aaron Hillegass: कोको Programming for मैक ओएस X, Addison-Wesley, 3rd Edition 2008, Paperback, ISBN 0-321-50361-9.
- Stephen Kochan: Programming in Objective-C, Sams, 1st Edition 2003, Paperback, ISBN 0-672-32586-1.
- Michael Beam, James Duncan Davidson: कोको in a Nutshell, O'Reilly, 1st Edition 2003, Paperback, ISBN 0-596-00462-1.
- Erick Tejkowski: कोको Programming for Dummies, 1st Edition 2003, Paperback, ISBN 0-7645-2613-8.
- Garfinkel, Simson; Mahoney, Michael K. (2002). Building Cocoa Applications: A Step by Step Guide (1st ed.). O'Reilly Media. CiteSeerX 10.1.1.394.3248. ISBN 0-596-00235-1.
- Paris Buttfield-Addison, Jon Manning: Learning कोको with Objective-C, O'Reilly, 3rd Edition 2012, Paperback, ISBN 978-1-4493-1849-9.
- Scott Anguish, Erik M. Buck, Donald A. Yacktman: कोको Programming, Sams, 1st Edition 2002, Paperback, ISBN 0-672-32230-7.
- Erik M. Buck, Donald A. Yacktman: कोको Design Patterns, Addison-Wesley Professional, 1st Edition 2009, Paperback, ISBN 978-0321535023
- Bill Cheeseman: कोको Recipes for मैक ओएस X, Peachpit Press, 1st Edition 2002, Paperback, ISBN 0-201-87801-1.
- Andrew Duncan: Objective-C Pocket Reference, O'Reilly, 1st Edition 2002, Paperback, ISBN 0-596-00423-0.
बाहरी संबंध
- Official website[dead link]
- Mac Developer Library, कोको Layer, एप्पल's documentation
- iDevApps, Mac programming forum
- कोको Dev Central
- कोको Dev
- Stack Overflow: कोको