क्या C ++ में iPhone प्रोग्राम करना संभव है


124

मैं सभी भाषा विविधता के लिए हूं, लेकिन ऑब्जेक्टिव सी पागल है। इसलिए मैं उत्सुक हूं: क्या कोको एपीआई के साथ आईफोन ऐप्स को कोको एपीआई के साथ कोड करना संभव है, आदि?

जवाबों:


57

लघु उत्तर, हाँ, की तरह। आप Objective-C ++ का उपयोग कर सकते हैं, जिसे आप Apple Developer Connection के बारे में पढ़ सकते हैं

यदि आप C ++ को पहले से जानते हैं, तो Objective-C सीखना बहुत सरल होगा, यदि आपने यह कोशिश करने का निर्णय लिया है। उस विषय पर अधिक जानकारी ADC पर भी है।


1
क्या आप ऐसी वेबसाइट या पुस्तक की सिफारिश कर सकते हैं जिसका उद्देश्य उद्देश्य C को सीखने के लिए अनुभवी C ++ प्रोग्रामर से है? मैं कुछ परीक्षण एक साथ ऐप्लिकेशन मैश करने में कामयाब रहे, लेकिन मैं एक छोटे से वाक्य रचना पीछे की ओर लगता है और मुझे यकीन है कि मैं चीजें हैं जो सिर्फ ऑब्जेक्टिव-सी के ज्ञान की कमी के माध्यम से मेमोरी लीक आदि के लिए नेतृत्व कर रहा हूँ कर रहा हूँ
Lea हेस

3
@LeaHayes "सी ++ से ऑब्जेक्टिव-सी" नामक एक मुफ्त पुस्तक। मान लेता है कि आप C ++ को जानते हैं और फिर आपको बताते हैं कि ऑब्जेक्टिव-सी में चीजों को कैसे अलग तरीके से किया जाता है। pierre.chachatelier.fr/programmation/fichiers/cpp-objc-en.pdf (यह मूल फ्रेंच का अंग्रेजी अनुवाद है)
ओलाफुर

61

हालांकि उद्देश्य-सी वास्तव में शुरू में "पागल" प्रतीत होता है, मैं आपको इसके साथ रहने के लिए प्रोत्साहित करता हूं। एक बार जब आपके पास "ए-हा" पल होता है, अचानक यह सब समझ में आने लगता है। मेरे लिए यह कोकोआ फ्रेमवर्क, भाषा, और यह सब एक साथ कैसे फिट बैठता है, इसे समझने के लिए लगभग 2 सप्ताह का फोकस ऑब्जेक्टिव-सी कंसंट्रेशन में लगा। लेकिन एक बार जब मुझे वास्तव में "मिल गया" तो यह बहुत ही रोमांचक था।

यह क्लिच लगता है, लेकिन यह सच है। अंत तक बने रहना।

बेशक, यदि आप C ++ लाइब्रेरी या मौजूदा C ++ कोड ला रहे हैं, तो आप उन मॉड्यूल का उपयोग Objective-C / Objective-C ++ के साथ कर सकते हैं।


42

मैं UI को एक साथ थप्पड़ मारने के लिए Objective-C का उपयोग करता हूं।
लेकिन कोड की हार्ड हिम्मत अभी भी C ++ में लिखी गई है।

यह उद्देश्य-सी यूआई इंटरफ़ेस और घटनाओं को संभालने का मुख्य उद्देश्य है।
और यह उस उद्देश्य के लिए बहुत अच्छा काम करता है।

मैं अभी भी कोड के लिए बैकएंड के रूप में सी ++ पसंद करता हूं (लेकिन यह मुख्य रूप से सी ++ की तरह मुझे पसंद है) आप आवेदन के बैकएंड के लिए काफी आसानी से ऑब्जेक्टिव-सी का उपयोग कर सकते हैं।


9
@Spanky: कैसे ओ मैं बिल्कुल क्या करते हैं। आप * .m फ़ाइल में सामान्य C लिख सकते हैं। आप * .mm फ़ाइलों (उद्देश्य-सी ++) में सामान्य C ++ लिख सकते हैं। Objective-C (++) फ़ाइलों के अंदर आप #include <XXX>C / C ++ फ़ाइलों की तरह सामान्य का उपयोग कर सकते हैं ।
मार्टिन जॉर्ज

28

सबसे पहले, ऑब्जेक्टिव-सी को "पागल" कहना हास्यपूर्ण है- मेरे पास बेज़र्न स्ट्रॉस्ट्रुप सी ++ पुस्तक है, जो मेरी तरफ से बैठी है, जो 1020 पृष्ठों पर देखता है। ऑब्जेक्टिव-सी पर एप्पल का पीडीएफ 141 है।

यदि आप UIKit का उपयोग करना चाहते हैं तो C ++ में कुछ भी करना आपके लिए बहुत मुश्किल होगा। कोई भी गंभीर iPhone ऐप जो Apple के UI के अनुरूप है, उसे Objective-C में लिखे जाने वाले UI भागों की आवश्यकता होगी। यदि आप OpenGL गेम लिख रहे हैं तो केवल आप लगभग पूरी तरह से C / C ++ से चिपक सकते हैं।


30
चूंकि कम प्रलेखन एक अच्छी बात थी? "सी ++ प्रोग्रामिंग लैंग्वेज" बहुत अच्छी तरह से है और एसटीएल का भी दस्तावेज है।
टिम्मम्म

2
@Timmmm: जब से K & R ने अपनी किताब के सामने के मामलों में यह बात कही है। Object-C, C ++ की तुलना में बहुत छोटी भाषा है, जिसमें कई समान लाभ हैं (और इसके कुछ और भी)। सब कुछ व्यापार, बिल्कुल। लेकिन न्यूनतम प्रलेखन अनुभवी C (या C ++) लोगों के लिए गति बढ़ाने के लिए ओबज-सी को बहुत आसान बनाता है।
बेन ज़ोट्टो

62
क्षमा करें, लेकिन ObjC पागल है। कार्यों को घोषित करने के एक पूरी तरह से अलग तरीके पर जोर, कोष्ठक का उपयोग। यह बिना किसी लाभ के अलग है। वे हास्यास्पद वाक्यविन्यास के बिना एक ही प्रभावी भाषा का मसौदा तैयार कर सकते थे। उन्होंने नहीं चुना। इस प्रकार यह पागल है।
Rhubarb

13
@ रुर्ब - हालांकि मुझे ऑब्जेक्टिव-सी पसंद है, मुझे इस बात से सहमत होना होगा कि यह अजीब सिंटैक्स है जिसका कोई उद्देश्य नहीं है।
राफेल

@ रुर्ब, यूप, याद रखें कि Apple वह कंपनी है जो उस पागलपन के साथ आई थी, और Apple अलग होने के एकमात्र उद्देश्य के लिए अलग है।
सीनमेमी

14

इसका कुछ अनुभव होने पर, आप वास्तव में अपने "कोर" कोड के लिए C ++ कोड का उपयोग कर सकते हैं, लेकिन आपको किसी भी iPhone विशिष्ट के लिए उद्देश्य-C का उपयोग करना होगा।

उद्देश्य-सी को C ++ की तरह कार्य करने के लिए बाध्य करने का प्रयास न करें। सबसे पहले यह आपको लगता है कि यह संभव है, लेकिन परिणामी कोड वास्तव में कोको के साथ अच्छी तरह से काम नहीं करेगा, और आप बहुत उलझन में होंगे कि क्या चल रहा है। किसी भी C ++ के बिना, ठीक से सीखने का समय निकालें, GUI और iPhone एप्लिकेशन कैसे बनाएं, फिर अपने C ++ बेस में लिंक करें।


3

आपको कोको एपीआई के साथ इंटरफ़ेस करने के लिए ऑब्जेक्टिव सी का उपयोग करना होगा, इसलिए कोई विकल्प नहीं है। बेशक, आप दृश्यों के पीछे जितना चाहें सी ++ का उपयोग कर सकते हैं (ऑब्जेक्टिव सी ++ इसे आसान बनाता है)।

यह वास्तव में एक पागल भाषा है, लेकिन यह भी ... एक बार उपयोग करने के लिए मज़ेदार है। :-)


3

मैं C ++ के बारे में निश्चित नहीं हूं, लेकिन आप मोनोक्टच नामक उत्पाद का उपयोग करके निश्चित रूप से सी # में आईफोन एप्लिकेशन को कोड कर सकते हैं ।

आप इस पोस्ट को MonoTouch Vs Obj-C पर विस्तृत चर्चा के लिए देख सकते हैं: MonoTouch और Objective-C के बीच कैसे निर्णय लें?


2

मैं जावा में iOS6 में लिखे गए कम्प्यूट-इंटेंसिव एंड्रॉइड ऐप को पोर्ट करने की प्रक्रिया में हूं। मैं जावा से C ++ में गैर-यूआई भागों को पोर्ट करके, ओब्ज-सी में न्यूनतम (यूआई) भागों को लिख रहा हूं, और मानक सी / सी ++ तकनीक का उपयोग करके पूर्व (छोटे) सी इंटरफेस में लपेट रहा हूं, ताकि इसे ओब्ज-सी से देखा जा सकता है, जो सी के सभी सुपरसेट के बाद है।

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

ऐसा प्रतीत नहीं होता है कि C ++ में मेरा शेष UI कोड लिखने से बहुत अधिक लाभ होगा, भले ही यह संभव हो, Xcode में इंटरफ़ेस बिल्डर द्वारा आपको दी गई मदद को देखते हुए, इसलिए मेरा उत्तर होगा कि आप C ++ का उपयोग कर सकते हैं लगभग आपके सभी ऐप, या जितना भी आपको उपयुक्त / सुविधाजनक लगता है।


2

हां, लेकिन यह सोचकर कि आप हर तरह के कार्यक्रम को एक ही भाषा में कर सकते हैं एक त्रुटिपूर्ण विचार है जब तक कि आप बहुत सरल कार्यक्रम नहीं लिख रहे हैं। Objective C कोको के लिए है जैसे C # .NET के लिए है, सही काम के लिए सही टूल का उपयोग करें, C ++ को कोको से इंटरेस्टिंग करने के लिए ब्रिजिंग कोड लिखकर और C ++ कोड को कोको की आवश्यकताओं के अनुसार व्यवहार करने की कोशिश करना एक अच्छा विकल्प नहीं है और न ही C ++ की उम्मीद है उद्देश्य सी से प्रदर्शन है। आपको मौजूदा कौशल को ध्यान में रखते हुए ऐप के लेआउट डिज़ाइन और आर्किटेक्चर का प्रयास करना चाहिए और निर्धारित करना चाहिए कि किस भाग को किस भाषा में लिखा जाना चाहिए।


0

मैं वर्तमान में ऑब्जेक्टिव-सी ++ फ्रेमवर्क लिख रहा हूं, जिसे ऑब्जेक्टिव-एक्स कहा जाता है, जो PURE C ++ iPHONE PROGRAMMING को संभव बनाता है। आप इस तरह कर सकते हैं:

#import "ObjectiveX.h"

void GUIApplicationMain() {    
    GUIAlert Alert;
    GUILabel Label;
    GUIScreen MainScreen;

    Alert.set_text(@"Just a lovely alert box!");
    Alert.set_title(@"Hello!");
    Alert.set_button(@"Okay");
    Alert.show();

    Label.set_text(@"Ciao!");
    Label.set_position(100, 200, 120, 40);

    MainScreen.init();
    MainScreen.addGUIControl(Label.init());    
}

और इसे GCC के उपयुक्त कमांडलाइन विकल्पों का उपयोग करके संकलित करें। मैं पहले से ही इस helloworld ऐप को संकलित कर चुका हूं और यह एक आकर्षण की तरह w0rkX0rz है। ;-) यह GoogleCode पर जल्द ही उपलब्ध होगा। ऑब्जेक्टिव-एक्स के लिए खोजें या http://infotronix.orgfree.com/objectivex लगभग पर जाएं । एक सप्ताह बाद!

अद्यतित (लेकिन स्पष्ट रूप से निष्क्रिय) URL: http://code.google.com/p/objectivex/


4
जब तक वास्तव में उपलब्ध न हो तब तक पोस्टिंग के साथ इंतजार क्यों न करें?
जॉर्ज Fritzsche

8
दोनों लिंक अब 404 हैं
झाओ जियांग

1
सोर्सफॉर्ग के अनुसार: "2014-01-24 के अनुसार, यह परियोजना अब सक्रिय विकास के अधीन नहीं है।" sourceforge.net/projects/objectivex
JAL

0

यह थोड़ा अपमानजनक हो सकता है, लेकिन फिर भी। आप iOS डिवाइस पर c ++ राइट प्रोग्राम कर सकते हैं। - CppCode IOS अनुप्रयोग की जाँच करें http://cppcode.info । मेरा मानना ​​है कि यह बाद में सी और सी ++ और उद्देश्य-सी सीखने में मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.