2008-11-16 8 views
28

पर कुछ जानकारी चाहिए, मैं ओएसएक्स और आईफोन में थोड़ा सा विकास करना चाहता हूं। मैं सालों से नेट/सी # डेवलपर रहा हूं। मैं सोच रहा था कि क्या कोई ऐसा व्यक्ति था जिसने दोनों प्लेटफार्मों में अनुभव किया था जो मुझे बता सकता है कि वे तुलना कैसे करते हैं और इसके विपरीत हैं। मैं इस बारे में जानना चाहता हूं कि मेरे आगे किस तरह के सीखने की वक्र है।.Net लड़के को कोको

धन्यवाद,

ज्योफ

उत्तर

22

प्रथम बुरा:
मैं XCode में कुछ कोको विकास किया है। पहली बात यह है कि आप देखेंगे कि आईडीई (एक्सकोड) विजुअल स्टूडियो के रूप में कहीं भी अंतर्ज्ञानी, या सामान्य रूप से अच्छा नहीं है। XCode में काम करते समय मुझे वास्तव में इंटेलिजेंस याद आती है। ऐप्पल डेवलपर शायद उस कथन के लिए मुझे वोट देंगे। लेकिन एक नेट वातावरण से आ रहा है, यही वह है जो मैं वास्तव में याद करता हूं। तो अपनी अपेक्षाओं को बहुत अधिक सेट न करें और आप बहुत निराश नहीं होंगे। मैं एक्सकोड को चलाने की कोशिश नहीं कर रहा हूं, यह विजुअल स्टूडियो जितना अच्छा नहीं है।

अब अच्छा:
एक कोको परियोजना के सामान्य वास्तुकला बहुत अच्छा है। मेरी इच्छा है। नेट विनफॉर्म और डब्ल्यूपीएफ ने कोको परियोजनाओं जैसे बॉक्स से बाहर एमवीसी का इस्तेमाल किया। जब तक आप एमवीसी पैटर्न का पालन करते हैं, आपको अपनी परियोजना के साथ ठीक करना चाहिए। मैंने जो भी किया है वह उद्देश्य सी में है। आप उस पर एक पुस्तक ले सकते हैं। मैंने Cocoa Programming for Mac OS X खरीदा और सोचा कि यह बहुत अच्छा था। अगर आपकी पृष्ठभूमि में कोई सी है, तो यह बहुत परिचित लगेगा। सी # संभावित से, वर्गों के लिए डॉट नोटेशन को टीसीएल के समान संदेश भेजने वाले नोटेशन के साथ प्रतिस्थापित किया जाता है।

आईट्यून्स को अपनी मशीन पर लोड करें और आईट्यून्स यू के तहत आईफोन देव वीडियो डाउनलोड करें। आपको ऐप्पल में डेवलपर प्रोग्राम के लिए साइन-अप करने की आवश्यकता होगी और आईफोन के लिए एक्सकोड के लिए अतिरिक्त बिट डाउनलोड करें।

उम्मीद है कि मदद करता है। मैं कोई समर्थक कोको डेवलपर नहीं हूं।

+0

एक्सकोड में स्वत: पूर्णता है, बस इसे गुणों में चालू करें यदि यह इस समय नहीं आ रहा है। एक्सकोड वीएस से अलग है लेकिन एक बार मैंने इसे अच्छी तरह से सीखा, मुझे लगता है कि यह बहुत अच्छा है ... और यह पूरी तरह से मुफ़्त है। –

+2

स्वत: पूर्णता इंटेलिजेंस के लिए एक मोमबत्ती नहीं रखती है, और मेरे लिए अच्छा काम नहीं करती है। धार्मिक युद्ध शुरू करने की कोशिश नहीं कर रहा - बस कोको-भूमि में जाने के लिए एक वैध नेट डेवलपर परिप्रेक्ष्य देने की कोशिश कर रहा है। –

+1

मैं वर्षों से एक .NET डेवलपर रहा हूं और मुझे इंटेलिजेंस की तुलना में स्वतः पूर्ण बेल्ट पसंद आया है। मुख्य रूप से यह पैरामीटर को भरने के तरीके के कारण और आप उनके माध्यम से स्कैन करने के लिए CTRL +/का उपयोग कर सकते हैं। – Lounges

3

बड़ी बात आपको हमेशा याद दिलाना है, यह है कि कोको केवल WinForms जैसा ही काम नहीं करता है। आपको कहीं भी "इवेंट हैंडलर" नहीं मिल रहा है, भले ही आप एक की तलाश करेंगे! ऐसा नहीं है कि WinForms खराब है, लेकिन कोको सिर्फ एक अलग प्रतिमान है।

14

मैं बीटा 1 से सी # और .NET के साथ व्यावसायिक रूप से विकास कर रहा हूं। एक्सकोड आईडीई विजुअल स्टूडियो की तुलना में एक पूरी तरह से अलग जानवर है। शुरुआत में आप बहुत भ्रमित और खो जाएंगे। मैं अभी भी यूआई के साथ पूरी तरह से satisifed नहीं हूँ (प्रिय भगवान मुझे एक समाधान प्रबंधक खिड़की दे और इस विभाजित स्क्रीन बकवास मार डालो), हालांकि किसी भी समय आप स्टूडियो में उतना ही उत्पादक और तेज़ नहीं होंगे। दस्तावेज़ीकरण तुलनीय है हालांकि मैं एमएसडीएन में लेआउट पसंद करता हूं।

कोको के लिए .NET की तुलना में जीयूआई टूलकिट के रूप में काम करना आम तौर पर आसान है। जैसा कि ऊपर बताया गया है कि यह एक अलग मानसिकता है, हालांकि एक बार जब आप अपने सिर को लपेट लेते हैं तो आप इसे खोद देंगे।

हालांकि आईफोन से संबंधित नहीं है, मैक और आईफोन विकास के बीच कई समानताएं हैं। आप हारून हिलेग्रास ओएसएक्स पुस्तक के नवीनतम संस्करण को पिकअप करने के लिए खुद को एक पक्ष बना रहे होंगे। किसी भी कोको सॉफ्टवेयर लिखने के लिए यह बहुत ही वास्तविक तथ्य है।

संक्षेप में ... आप बहुत खो गए और उलझन में उलझन में जा रहे हैं, लेकिन इसे इसके लायक बनाते हैं।

4

मैं दोनों में बहुत अनुभवी हूं, हालांकि मैंने एक साल या उससे अधिक के लिए सी # कोड नहीं किया है।मैं ओब्जे-सी से सी # तक गया, और मुझे बहुत अधिक परेशानी नहीं थी। ओबीजे-सी कोड मुझे थोड़ा और अधिक अनौपचारिक और सी # से कम कठोर लगता है; उदाहरण के लिए कोई टाइप किए गए सरणी नहीं हैं, और आपको स्पष्ट रूप से जांचने की चिंता करने की आवश्यकता नहीं है कि कोई ऑब्जेक्ट उस पर एक कॉल करने से पहले शून्य/शून्य है या नहीं। आम तौर पर यह एक अच्छी बात है, क्योंकि आप अधिक कॉम्पैक्ट, सुरुचिपूर्ण कोड (आईएमओ) लिख सकते हैं। उसी समय सी # के विपरीत आपको ओबीजे-सी के साथ काम करने के लिए सी प्रोग्रामिंग की बुनियादी अवधारणाओं को जानने की आवश्यकता है, इसलिए यदि आप जंगली हैं तो आप पॉइंटर्स जैसी चीजों पर ब्रश करना चाहेंगे।

मुझे लगता है कि एपीआई के लिए आपको पता चलेगा कि कोको को एंटरप्राइज़ के बजाय डेस्कटॉप अनुप्रयोगों के लिए अधिक अनुकूल है। उदाहरण के लिए, जहां .NET में ADO.NET है, ReportViewer नियंत्रण, जबकि कोको में कोर डेटा, पीडीएफकिट और सर्चकिट है।

7

मैंने इसे अभी पसंदीदा के रूप में चिह्नित किया है, क्योंकि मुझे उम्मीद है कि .NET + कोको लोग चिल्ला रहे हैं। मैं अभी कोको के साथ शुरू कर रहा हूं, और अब तक इसे प्यार कर रहा हूं। (यह मदद करता है कि मैं 10.5 है, जो एक विकल्प के रूप कचरा संग्रहण की अनुमति देता है पर काम कर रहा हूँ।)

सबसे बड़ी मतभेद मैं अब तक देखा है में से कुछ:

  1. हाँ, XCode दृश्य तुलना में बहुत अलग है स्टूडियो। अन्य लोग "स्प्लिट स्क्रीन" प्रकृति का पर्दाफाश कर सकते हैं, लेकिन मैंने इसे अपने दिमाग को लपेटने के बाद काफी सहज महसूस किया है। शायद यहां सलाह का सबसे बड़ा टुकड़ा मैं टूलबार को कस्टमाइज़ कर सकता हूं, "संपादक" बटन जोड़ सकता हूं, और कोड संपादन के लिए धार्मिक रूप से बटन का उपयोग कर सकता हूं।
  2. मैसेजिंग सिंटैक्स अपरिचित महसूस करता है, लेकिन मुझे संदेह है कि ऐसा इसलिए है क्योंकि मैं स्मॉलटॉक पृष्ठभूमि से नहीं आया हूं। (मैंने सुना - हालांकि मैंने इसे मान्य नहीं किया है - कि अवधारणाएं बहुत समान हैं।) जाहिर है, 10.5 के रूप में, बिंदु-नोटेशन और गुणों की धारणा को जोड़ा गया है, लेकिन हिलेगैस उनके खिलाफ सिफारिश करता है। मैं कहता हूं जो कुछ भी सही लगता है। (मुझे अभी तक पुस्तक में अभी तक नहीं मिला है, खुद ...)
  3. भाषा सभी उद्देश्यों और उद्देश्यों के लिए, बिना टाइप की गई है। यहां पेशेवर हैं कि आप वास्तव में अपनी आवश्यकताओं के अनुरूप फ्रेमवर्क कक्षाओं को संशोधित कर सकते हैं, और संदेश रनटाइम पर हल हो जाएंगे, जिससे आपको बहुत अधिक स्वतंत्रता मिल जाएगी। विपक्ष यह है कि आपको रनटाइम तक त्रुटियां नहीं मिल सकती हैं, और इनमें से कई त्रुटियां .NET अपवादों के तरीके से व्यवहार नहीं करती हैं - यानी, उनमें से कई एक पूर्ण अनुप्रयोग को रोक नहीं देते हैं जब आप उन्हें फंसाने में विफल रहते हैं। (माना जाता है कि @throw कीवर्ड है; मुझे अभी तक वहां नहीं मिला है। :)) एक और बात यह है कि null (nil) की ओब्जे-सी की अवधारणा संदेश प्राप्त कर सकती है - NullReferenceException अवधारणा, या तो। इनमें से दोनों डिबगिंग सिरदर्द का कारण बन सकते हैं।
  4. इंटरफ़ेस बिल्डर WinForms/WPF/ASP.NET डिजाइनरों की तुलना में एक नया नया जानवर है। पूरे यूआई को संग्रहित करने की अवधारणा, और यह कोड नहीं होने के कारण, हम में से कई लोगों के लिए कठिन अवधारणाओं में से एक है। इसके साथ कुछ भी गलत नहीं है, लेकिन हमें इसके चारों ओर अपने सिर लेने की जरूरत है।
  5. कचरा संग्रह। 10.5 के रूप में, कोको और ऑब्जेक्टिव-सी दोनों या तो संदर्भ गिनती (retain/release/autorelease) मेमोरी प्रबंधन और स्वचालित कचरा संग्रह का समर्थन करते हैं। काम करना शुरू करने के बाद, मैं या तो बहुत अधिक जानकारी नहीं दे सकता, लेकिन जीसी का उपयोग करना आसान है, आपको इसे अपने लक्षित विकल्पों में मैन्युअल रूप से निर्दिष्ट करना होगा - और आपके ऐप को अब 10.5 या उच्चतम की आवश्यकता होगी चलाते हैं। इसके अतिरिक्त, जीसी के साथ भी, जब आप उनके साथ काम करते हैं तो अपने पॉइंटर्स को nil पर मैन्युअल रूप से सेट करने का सबसे अच्छा अभ्यास है, ताकि वे जीसी को संकेत दे सकें कि वे संग्रह के लिए तैयार हो सकते हैं। .NET के रूप में काफी पारदर्शी नहीं है। (फिर से, बुरा नहीं है, सिर्फ अलग। इन बातों को जानें!)

मैं किसी भी तरह एक विशेषज्ञ द्वारा हूँ। मैं सचमुच बस इस मार्ग को शुरू कर दिया (एक बार फिर)। मैं इसे प्यार करता हूं, हालांकि, मुझे संदेह है कि यदि मेरे जैसे हार्ड-कोर माइक्रोसॉफ्ट डेवलपमेंट लड़के को खोदना पड़ सकता है, तो अन्य भी कर सकते हैं।

अंत में, मैंने कुछ महीने पहले .NET Addict ब्लॉग की खोज की थी। लेखक .NET और कोको दोनों करता है, और इसमें मतभेदों पर चर्चा करने वाली कई पोस्ट हैं। अत्यधिक सिफारिशित।

10

आप कुछ कोको/ऑब्जेक्टिव-सी पृष्ठभूमि है, तो आप के "iPhone विकास की शुरुआत" मदद डेव मार्क और जेफ लेमार्क द्वारा के साथ iPhone विकास में कूद कर सकते हैं:

http://www.amazon.com/dp/1430216263/

यह बहुत है अनुसरण करने में आसान है, लेकिन लेखक ऑब्जेक्टिव-सी (जैसा कि पिछला कवर पर बताया गया है) के कुछ पूर्व ज्ञान मानते हैं, इसलिए मैं हारून हिलेग्रास द्वारा "मैक ओएस एक्स के लिए कोको प्रोग्रामिंग" के पहले पांच या छह अध्यायों के साथ शुरू करने की सलाह दूंगा, जैसा कि पहले दूसरों ने उल्लेख किया था।

http://www.amazon.com/dp/0321503619/

हारून चौखटे अब अगले पर अपने दिनों से कोको के साथ जुड़े का उपयोग करने और ऑब्जेक्टिव-सी शिक्षण और कर दिया गया है, और यह दिखाता है। सामग्री वास्तव में, वास्तव में अच्छा है।

जबकि विकास तकनीक का बड़ा हिस्सा मैक और आईफोन पर समान रूप से लागू होता है, कुछ तकनीक केवल मैक (उदाहरण के लिए, कचरा संग्रह, बाइंडिंग, कोर डेटा) पर लागू होती हैं और कुछ केवल आईफोन पर लागू होती हैं (उदाहरण के लिए, एकाधिक एक कार्रवाई के लिए लक्ष्य)।

यदि आप आईफोन विकास को वास्तव में जल्दी से चुनना चाहते हैं और आप कुछ नकदी निवेश करने के इच्छुक हैं, तो हारून की टीम बिग नेर्ड रांच में कक्षाओं के माध्यम से आपको एक सप्ताह में जो कुछ भी जानने की आवश्यकता है उसे भी सिखा सकती है। (IPhone वर्ग हमेशा जल्दी भर जाता है, लेकिन अगर आप सिलिकॉन वैली में होना करने के लिए होता है, वहां अभी भी जनवरी में "यात्रियों के लिए iPhone" में कक्ष है।)

http://www.bignerdranch.com/

(के लिए कक्षाएं क्लिक करें टैब रूबी, एंड्रॉइड और अधिक सहित, किस समय और कब।)

जबकि मैं व्यक्तिगत रूप से ऊपर दिए गए विकल्पों को प्राथमिकता देता हूं, निश्चित रूप से कुछ मुफ्त ऑनलाइन विकल्प भी हैं। स्कॉट स्टीवेंसन कोको/ऑब्जेक्टिव-सी शिक्षण सामग्री में प्रयास का एक विशाल राशि डाल दिया:

http://www.cocoadevcentral.com/

और स्टैनफोर्ड दोनों मैक विकास में और iPhone विकास में कक्षाओं की पेशकश की है, एप्पल के इंजीनियरों द्वारा सिखाया है, और पोस्ट किया गया है कक्षा सामग्री ऑनलाइन:

Mac: http://www.stanford.edu/class/cs193e/
iPhone: http://www.stanford.edu/class/cs193p/

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

मैक/आईफोन विकास कोड को कम करने के बारे में सब कुछ है। आपको जितना कम कोड लिखना है, उतना ही कम रखना है, और गलती के लिए कम मौका है। यूआई के लिए आवश्यक कोड को कम करने के लिए आईबी बहुत अच्छा है।

आपकी सी/सी # पृष्ठभूमि आपको अच्छी तरह से सेवा प्रदान करेगी।आप पाएंगे कि उद्देश्य-सी पहले बहुत अजीब लगता है, लेकिन मुझे संदेह है कि आप इसकी ताकत की सराहना करेंगे, और आप इसे बहुत जल्दी उठाएंगे। सी ++ के विपरीत, यह वास्तव में बहुत सरल है।

+0

क्या यह एक सटीक प्रतिक्रिया है, या आपने इसे इस पोस्ट के लिए लिखा था? आप अपने अपवोट पॉइंट्स के लिए बहुत मेहनत कर रहे हैं :-) –

+0

वर्णित हारून हिलेग्रास पुस्तक बहुत अच्छी है। मैं सिर्फ कोको सीख रहा हूं और इससे काफी मदद मिली। मैंने कुछ आगामी आईफोन किताबें भी पढ़ी हैं (सफारी बुकशेल्फ़ पर) और जब वे अच्छे थे तो वे आईफोन विशिष्ट हैं, उनमें लगभग उतना ही विस्तार नहीं है। महान उत्तर के लिए – U62

+0

+1! – gyurisc