आप कोको एप्लिकेशन को पूरी तरह से C ++ में नहीं लिख सकते। कोको अपने कई मुख्य प्रौद्योगिकियों जैसे की-वैल्यू बाइंडिंग, डेलीगेट्स (कोको शैली), और लक्ष्य-एक्शन पैटर्न के लिए ऑब्जेक्टिव-सी की देर से बाध्यकारी क्षमताओं पर निर्भर करता है। देर से बाध्यकारी आवश्यकताओं ने कोको एपीआई को एक संकलन-समयबद्ध, टाइप की गई भाषा जैसे C ++ it को लागू करना बहुत कठिन बना दिया है । आप निश्चित रूप से, एक शुद्ध सी ++ ऐप लिख सकते हैं जो ओएस एक्स पर चलता है। यह सिर्फ कोको एपीआई का उपयोग नहीं कर सकता है।
यदि आपके पास अन्य प्लेटफ़ॉर्म पर C ++ ऐप्स और अपने कोको-आधारित एप्लिकेशन के बीच कोड साझा करना चाहते हैं, तो आपके पास दो विकल्प हैं। पहला C ++ में मॉडल लेयर और कोको में GUI लिखना है। यह एक बहुत ही बड़े एप्लिकेशन द्वारा उपयोग किया जाने वाला एक सामान्य तरीका है, जिसमें Mathematica भी शामिल है । आपका C ++ कोड अपरिवर्तित छोड़ा जा सकता है (आपको OS X पर C ++ लिखने या संकलित करने के लिए "फंकी" ऐप्पल एक्सटेंशन की आवश्यकता नहीं है)। आपकी कंट्रोलर लेयर संभवतः ऑब्जेक्टिव-सी ++ (शायद "फंकी" Apple एक्सटेंशन जिसे आप संदर्भित करते हैं) का उपयोग करेगी। Objective-C ++ C ++ का एक सुपरसेट है, जैसा कि Objective-C, C. का एक सुपरसेट है। Objective-C ++ में, आप [some-objc-object callMethod];
C ++ फ़ंक्शन के भीतर से objc-style मैसेज पासिंग कॉल (जैसे ) कर सकते हैं । इसके विपरीत, आप C ++ फ़ंक्शन को ObjC कोड के भीतर से कॉल कर सकते हैं जैसे:
@interface MyClass {
MyCPPClass *cppInstance;
}
@end
@implementation MyClass
- (id)init {
if(self = [super init]) {
cppInstance = new MyCPPClass();
}
return self;
}
- (void) dealloc {
if(cppInstance != NULL) delete cppInstance;
[super dealloc];
}
- (void)callCpp {
cppInstance->SomeMethod();
}
@end
आप Objective-C भाषा गाइड में Objective-C ++ के बारे में अधिक जानकारी प्राप्त कर सकते हैं । दृश्य परत तब शुद्ध उद्देश्य-सी हो सकती है।
दूसरा विकल्प क्रॉस-प्लेटफॉर्म C ++ टूलकिट का उपयोग करना है। क्यूटीटूलकिट बिल फिट हो सकता है। क्रॉस-प्लेटफ़ॉर्म टूलकिट आमतौर पर मैक उपयोगकर्ताओं द्वारा तिरस्कृत किए जाते हैं क्योंकि वे सभी विवरणों को बिल्कुल सही नहीं मानते हैं और मैक उपयोगकर्ता मैक अनुप्रयोगों के यूआई में पॉलिश की उम्मीद करते हैं। Qt, हालांकि, आश्चर्यजनक रूप से अच्छा काम करता है, और दर्शकों और आपके ऐप के उपयोग के आधार पर, यह काफी अच्छा हो सकता है। इसके अलावा, आप ओएस एक्स-विशिष्ट तकनीकों में से कुछ को खो देंगे जैसे कि कोर एनिमेशन और कुछ क्विक फ़ंक्शनल कार्यक्षमता, हालांकि क्यूटी एपीआई में अनुमानित प्रतिस्थापन हैं। जैसा कि आप बताते हैं, कार्बन 64-बिट में पोर्ट नहीं किया जाएगा। चूंकि क्यूटी को कार्बन एपीआई पर लागू किया गया है, इसलिए ट्रोलटेक / नोकिया को 64-बिट संगत बनाने के लिए क्यूटी को कोको एपीआई में पोर्ट करना पड़ा है। मेरी समझ यह है कि Qt का अगला रिले (वर्तमान में रिलीज कैंडिडेट में है) इस संक्रमण को पूरा करता है और ओएस एक्स पर 64-बिट संगत है। यदि आप सी ++ और कोको एपीआई को एकीकृत करने में रुचि रखते हैं, तो आप क्यूटी 4.5 के स्रोत पर एक नज़र डाल सकते हैं।
To थोड़ी देर के लिए ऐप्पल ने कोको एपीआई को जावा के लिए उपलब्ध कराया, लेकिन पुल को व्यापक हाथ-ट्यूनिंग की आवश्यकता थी और ऊपर वर्णित की-वैल्यू बाइंडिंग जैसी अधिक उन्नत प्रौद्योगिकियों को संभालने में असमर्थ था। वर्तमान में गतिशील रूप से टाइप की गई, रनटाइम-बाउंड भाषाएं जैसे पायथन, रूबी, आदि ऑब्जेक्टिव-सी के बिना कोको ऐप लिखने के लिए एकमात्र वास्तविक विकल्प हैं (हालांकि इन पुलों में हुड के तहत ऑब्जेक्टिव-सी का उपयोग होता है)।