2008-09-22 14 views
21

पर ऑब्जेक्टिव-सी का उपयोग करने के क्या फायदे हैं मैंने उद्देश्य-सी का उल्लेख सुना है लेकिन मैंने इसे कभी भी उपयोग नहीं किया है। मैं उत्सुक था कि इसकी हर राय सामान्य रूप से और सी ++ के संबंध में थी। क्या ऐसी कोई परियोजनाएं हैं जहां यह अधिक उपयोगी या कम उपयोगी होगी?सी ++

उत्तर

0

मैक और आईफोन विकास के लिए, यह निश्चित रूप से बेहतर है। नवीनतम संस्करण में जीसी है, इसलिए यदि आपको यह पसंद है, तो आप शायद इसे सी ++ से बेहतर पसंद करेंगे।

+0

बहुत ढीला विधि आमंत्रण और अलग इंटरफेस के बंधन काफी स्थिर कोड के लिए बनाते हैं, और चल वस्तुओं हूँ एक छोटे से क्लीनर को खोजने (मेमोरी एड्रेस रिक्त स्थान) ऐप्स को बहुत स्थिर बनाता है, क्योंकि यह मूल रूप से सी –

+0

है "नवीनतम संस्करण में जीसी है, इसलिए यदि आपको यह पसंद है, तो आप शायद इसे सी ++ से बेहतर पसंद करेंगे।" ध्यान दें कि यह एक अनावश्यक तर्क है। एक जीसी जरूरी नहीं है कि सी ++ डेवलपर का ग्राल ... :-p ... – paercebal

+0

मैं सहमत हूं - यही कारण है कि मैंने कहा, "इसलिए यदि आपको यह पसंद है" –

4

मेरी राय यह है कि उद्देश्य-सी का सिंटैक्स पहले थोड़ा "अजीब" है, खासकर यदि आप सी/सी ++ पृष्ठभूमि (जैसे मैंने किया) से आ रहे हैं। यदि आप मैक या आईफोन के लिए ऐप्स लिखने की योजना बना रहे हैं, तो कोको विकास जाने का तरीका है। मुझे इस वसंत के लगभग एक महीने तक मैक पर कुछ विकास करने का अवसर मिला और क्यूटी पुस्तकालयों का उपयोग करके इसे सी ++ में लिखने का विकल्प चुना क्योंकि मैं उनसे काफी परिचित था और समय सार का था।

यदि आपके पास मैक है, तो इसे एक शॉट दें! वहां बहुत सारी जानकारी है और विकास के लिए कुछ अच्छे उपकरण हैं।

+1

इन उत्कृष्ट उत्तरों में जोड़ने के लिए मैं यह इंगित करना चाहता हूं कि उद्देश्य-सी ++ भी है यदि आप इसके साथ शुरुआत करने में अधिक सहज महसूस करते हैं। –

3

यदि आप लिनक्स चला रहे हैं तो आप जीएनयूएसटीपी स्थापित कर सकते हैं जो कोको के साथ बहुत अच्छी संगतता प्रदान करता है। यह आपको मैक के मालिक के बिना उद्देश्य-सी/कोको विकास पर शुरू कर सकता है। उद्देश्य-सी सीखने के लिए सर्वोत्तम संसाधन [मेरी राय में] ऐप्पल के साथ हैं।

http://developer.apple.com/referencelibrary/Cocoa/index.html

19

कई अन्य लोगों की तरह मैं सिर्फ iPhone के कारण Obj सी को देख शुरू कर दिया है। मैंने बहुत सी सी ++ और सी # किया है और जो मैं देख सकता हूं, ओबीजे-सी के पास ओओ के लिए मूल रूप से अलग दृष्टिकोण है, जिसमें यह सी के लिए स्मॉलटाक जैसी मैसेजिंग को जोड़ता है। सी ++ की तरह यह मूल रूप से अभी भी सी-संगत है लेकिन ओओ एक्सटेंशन आप किसी ऑब्जेक्ट को कोई संदेश भेजते हैं। उस अर्थ में यह सांख्यिकीय रूप से टाइप नहीं किया गया है जैसे सी ++ और सी # जहां वस्तुएं जो वस्तुएं कर सकती हैं वह कक्षा से बंधी हुई हैं। Obj-C में आप किसी ऑब्जेक्ट को एक संदेश भेज सकते हैं भले ही वह इसका समर्थन न करे। ऑब्जेक्ट तब इसे अग्रेषित कर सकता है अगर यह नहीं जानता कि इसके साथ क्या किया जाए।

वास्तव में अच्छी बात यह है कि आप रनटाइम पर इंटरफेस (प्रोटोकॉल) जोड़ सकते हैं और आप अपने स्वयं के हैंडलर जोड़ सकते हैं जो मौजूदा कक्षाओं के लिए संदेश हैंडलर को रोक और छिपाते हैं।

संदेश प्रबंधन की बात आने पर सभी में बहुत अधिक लचीलापन है, और रूबी या स्मॉलटाक में आप क्या करेंगे। क्या यह अच्छा विचार है कि इस प्रकार के ओओ को सी पर तैयार किया गया हो या नहीं, मैं अभी तक नहीं बता सकता, कुछ तरीकों से सी ++ दृष्टिकोण सी के मूल विचार के साथ बेहतर होता है लेकिन दूसरी ओर ओबीजे-सी ओओ दृष्टिकोण अधिक है क्या ओओ purists पसंद है।

15

"Some nice features of the Objective-C language" से:

  • वर्ग वस्तुओं रहे हैं
  • गतिशील टाइपिंग और वैकल्पिक स्थिर टाइपिंग
  • श्रेणियाँ
  • संदेश भेजने
  • अभिव्यंजक संदेश वाक्य रचना
  • आत्मनिरीक्षण
  • गतिशील रन समय
  • स्वत: कचरा संग्रहण
  • सी अंदर
  • सी ++ धाराप्रवाह
  • सादगी
  • एप्पल प्रौद्योगिकियों
1

यह सी की तुलना में अधिक गतिशील ++ और भारी स्मालटाक से प्रभावित है के लिए प्रवेश। मुझे इसे सी ++ की तुलना में "बेहतर" नहीं मिला - इसके विपरीत, लेकिन कुछ लोग करते हैं।

4

क्या ऑब्जेक्टिव-सी इतनी महान बनाता है के भाग भाषा नहीं है (हालांकि कि है एक बड़ा हिस्सा यह OT), यह कोको (या CocoaTouch) रूपरेखा है कि (यह के साथ चला जाता है कम से कम के लिए है 99% objc उपयोगकर्ता ;-)

व्यावहारिक रूप से, मैं पुराने "क्लासिक" मैक दिनों में एक सी ++ प्रोग्रामर होता था। ऑब्जेक्टिव-सी, कोको और मैक ओएस एक्स पर स्विच करने से मुझे पता चला कि मैं और अधिक उत्पादक बन गया हूं। यह कहना मुश्किल है कि वास्तव में कितना उत्पादक है, लेकिन 50% से 100% सही लगता है।

2

ठीक है, यदि आप आईफोन जैसे कुछ प्लेटफ़ॉर्म के लिए कोडिंग कर रहे हैं, तो उद्देश्य-सी आवश्यक है। उद्देश्य-सी गतिशील (रन-टाइम) टाइपिंग का भी उपयोग करता है, जो कई लोग स्थैतिक (संकलन-समय) से अधिक पसंद करते हैं।

5

उद्देश्य सी की ओओ विशेषताएं स्थैतिक (संकलन-समय) टाइपिंग के बजाय गतिशील टाइपिंग का उपयोग करती हैं। दोनों भाषाओं के दृष्टिकोण में यह बड़ा अंतर है - चाहे वह लाभ हो या न हो, स्थिर बनाम गतिशील टाइपिंग के बारे में आपकी राय पर निर्भर करता है।

1

वेबकिट मूल रूप से एक सी ++ प्रोजेक्ट (केडीएम से केएचटीएमएल) था जिसे बाद में ऐप्पल द्वारा कोको-पर्यावरण के साथ अधिक संगत होने के लिए अनुकूलित किया गया था और इस प्रकार इसका उद्देश्य-सी परत मिला।

12

मैं उद्देश्य सी के वाक्य रचना ग से ++ के हालांकि मैं जानता हूँ कि मैं अल्पसंख्यक में यहाँ अलग अलग क्षेत्रों में

+3

हाँ, मैं कहूंगा कि यह बहुत साफ है। बस थोड़ा नहीं। की तरह, यह वास्तव में पार्स किया जा सकता है। –