इस भाग में मैं आपको मैक ओएस एक्स तेंदुए के लिए एप्लिकेशन डेवलपमेंट टूल्स के बारे में बताऊंगा। मैं तुरंत कहूंगा कि मैं केवल उन लोगों पर विचार करूंगा जो स्वयं
Apple द्वारा प्रदान किए गए हैं। अन्य आईडीई मौजूद हैं, लेकिन वे आमतौर पर क्रॉस-प्लेटफ़ॉर्म (उदाहरण के लिए, कोड :: ब्लॉक) हैं, इसलिए इस लेख में उनके बारे में बात नहीं करना बेहतर है।
इसलिए, लियो के साथ डिस्क पर मैक ओएस एक्स डेवलपर का टूलकिट है - एप्लिकेशन बनाने के लिए आवश्यक कार्यक्रमों और रूपरेखाओं का एक सेट। यह पूरी चीज / डेवलपर फ़ोल्डर में एप्लिकेशन (एप्लिकेशन, प्रलेखन, उदाहरणों का एक गुच्छा, विभिन्न उपयोगी उपयोगिताओं, आदि) स्थापित है।
स्थापना के बाद, इसमें 4 मुख्य विकास अनुप्रयोग हैं:
1. Xcode - मुख्य IDE
2. इंटरफ़ेस बिल्डर - प्रोग्राम इंटरफेस बनाने के लिए एक कार्यक्रम, हालांकि इसकी क्षमताएं बहुत व्यापक हैं
3. उपकरण - कार्यक्रम को ट्रैक करने के लिए एक उपकरण
4. डैशकोड - डैशबोर्ड के लिए विजेट बनाने का कार्यक्रम
और अब इन अनुप्रयोगों के बारे में अधिक विस्तार से:
/ * कई तस्वीरें क्लिक करने योग्य हैं * /
Xcode

Xcode मुख्य विकास का माहौल है, वहाँ सब कुछ है जो IDE के लिए होना चाहिए। सभी कार्यों को चित्रित करने के लिए बहुत अर्थ नहीं है, क्योंकि यह विज़ुअल स्टूडियो या केडवेलप से बहुत अलग नहीं है। लेकिन संस्करण 3.0 में नवाचारों के बारे में यह ध्यान देने योग्य है:
1. कोड ब्लॉक की रोशनी:

2. कोड के तह (तह) ब्लॉक (अंत में)
3. सुधार (गति की ओर) कोड संपादक
4. कोड अपवर्तन

5. उद्देश्य-सी 2.0 समर्थन
6. अनुसंधान सहायक - एक सहायक, जो चयनित पाठ के आधार पर, इसकी विंडो में मदद और डिस्प्ले में एक उपयुक्त लेख खोजने की कोशिश करता है

7. त्रुटियों, चेतावनियों आदि को सीधे कोड में दिखाएं:

8. परियोजना के स्नैपशॉट। एक बहुत ही सुविधाजनक चीज, Ctrl + Command + S दबाकर, वर्तमान प्रोजेक्ट को एक अलग स्थान पर सहेजा जाता है, और फिर कुछ स्मार्ट होने पर वापस लौटना संभव होगा, और प्रत्येक फ़ाइल के लिए क्या हुआ और क्या हुआ है के बीच अंतर दिखाया गया है:

9. आयोजक। जैसा कि मैं इसे समझता हूं, कई परियोजनाओं के प्रबंधन के लिए यह टूल आपको इसके लिए अज्ञात भाषाओं में प्रोग्राम लिखने के लिए Xcode का उपयोग करने की भी अनुमति देता है। मैं खुद अभी भी समझ नहीं पाया कि यह क्या था, लेकिन मुझे
एक लेख मिला
जो आयोजक के बारे में अधिक बताता है।
इंटरफ़ेस बिल्डर

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

उपकरण अनुप्रयोगों को ट्रैक करने के लिए एक उपकरण है। OpenSolaris से एक मैक ओएस एक्स पोर्ट "DTrace अनुरेखण ढांचे" पर बनाया गया। लाइब्रेरी में संग्रहीत अलग-अलग टूल का उपयोग करके ट्रैकिंग स्वयं होती है और यदि आवश्यक हो, तो मुख्य विंडो में खींच लिया जाता है। प्रारंभ में, पहले से ही कई उपकरण हैं, उदाहरण के लिए, नेटवर्क गतिविधि की निगरानी के लिए एक उपकरण, प्रोसेसर लोड, डिस्क पर रीड-राइट। यदि आवश्यक उपकरण पर्याप्त नहीं है, तो आप इसे स्वयं बना सकते हैं:

Dashcode
मुझे लगता है कि नाम से यह स्पष्ट है कि यह कार्यक्रम क्या है, अर्थात्, डैशबोर्ड के लिए विजेट बनाना। मैं लंबे समय तक कार्यक्रम में नहीं रहा, एक विजेट बनाने की प्रक्रिया ने मुझे मैक्रोमीडिया फ्लैश में काम करने की याद दिला दी। मैंने 10 सेकंड में आरएसएस हब पढ़ने के लिए एक विजेट बनाया:

Xcode और इंटरफ़ेस बिल्डर का उपयोग करके एक सरल अनुप्रयोग बनाना
जैसा कि मैंने वादा किया था, अब हम एक साधारण एप्लिकेशन बनाएंगे। यह क्या करेगा? संपादन फ़ील्ड में पाठ दर्ज करने और Enter दबाने के बाद, लेबल फ़ील्ड में दर्ज पाठ प्रदर्शित करें। मैं आपको चेतावनी देता हूं कि मुझे इस बारे में विस्तार से नहीं बताया गया है कि इस तरह से कुछ करने की आवश्यकता क्यों है, mat.part बाद में जाएगी, अब बिना किसी प्रश्न के एप्लिकेशन बनाना आसान है।
तो चलिए शुरू करते हैं:
Xcode खोलें और मेनू से फ़ाइल => नया प्रोजेक्ट चुनें, दिखाई देने वाली विंडो में "कोको एप्लिकेशन" चुनें और अगला क्लिक करें:

अगला हम प्रोजेक्ट का नाम सेट करते हैं - habr_1 और जहां इसे संग्रहीत किया जाएगा (मेरे पास ~ / xcode / habr_1 /) है:

इसके बाद Finish पर क्लिक करें और प्रोजेक्ट प्राप्त करें। अब हमें एक वर्ग जोड़ने की जरूरत है जो कि हमें जो चाहिए उसे लागू करेगा। ऐसा करने के लिए, फ़ाइल => नई फ़ाइल ... पर जाएं और ऑब्जेक्टिव-सी क्लास चुनें और नेक्स्ट पर क्लिक करें। अगली विंडो में हमें फ़ाइल नाम निर्दिष्ट करने के लिए कहा जाएगा, इसलिए हम "नियंत्रक" लिखते हैं:

अब दो फाइलें प्रोजेक्ट विंडो में बाईं ओर क्लासेस फ़ोल्डर में दिखाई देती हैं: कंट्रोलर.एच और कंट्रोलर। कंट्रोलर खोलें। चित्र में वैसा ही लिखें:

अब MainMenu.nib फाइल पर डबल क्लिक करें, इंटरफ़ेस बिल्डर खुल जाएगा और सक्रिय हो जाएगा। हम क्या देखते हैं: खिड़की के लिए एक रिक्त, मुख्य मेनू और एक खिड़की जो दर्शाती है कि हमने मेनमेनू.निब खोला है। मेनू टूल पर क्लिक करें => ऑब्जेक्ट्स और टूल्स के साथ लाइब्रेरी खोलने के लिए लाइब्रेरी => इन ऑब्जेक्ट्स के गुणों को देखने के लिए इंस्पेक्टर। अब हमें MainMenu.nib में एक ऑब्जेक्ट जोड़ने की आवश्यकता है जो "नियंत्रक" वर्ग का प्रतिनिधित्व करेगा जिसे हमने बनाया है, इसलिए लाइब्रेरी में हमें NSObject ऑब्जेक्ट (एक नीला पारभासी घन) मिल जाता है और इसे Mainenenu.nib लेबल वाली विंडो में खींचें:

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

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

और अब मज़ेदार भाग शुरू होता है, हमें कक्षा से "लेबल" चर को लेबल पर सेट करने और "सेटटेक्स्ट:" को उस संदेश के रूप में बाँधने की ज़रूरत है, जो पाठ के संपादन के समाप्त होने पर संदेश भेजता है। आइए लेबल को परिवर्तनशील लेबल पर बांधें: हमारी "कंट्रोलर" ऑब्जेक्ट को सक्रिय करें, ब्लू क्यूब के ऊपर Ctrl और बाईं माउस बटन को दबाए रखें और कर्सर को हमारे लेबल पर ले जाएं, निम्न चित्र देखें:

LMB को रिलीज़ करने के बाद, ऐसी विंडो दिखाई देती है (इसमें सभी वर्ग चर शामिल होंगे जो उस प्रकार के समान हैं जैसे कि हम क्या करने की कोशिश कर रहे हैं):

हम इसमें केवल लेबल प्रविष्टि का चयन करते हैं। यही है, अब हमने फॉर्म पर क्लास वेरिएबल लेबल और हमारे लेबल को कनेक्ट किया है। इसमें भेजे गए संदेश को एडिट बॉक्स से जोड़ना भी शामिल है, केवल आपको इसे क्यूब से बॉक्स तक नहीं ले जाना है, बल्कि एडिट बॉक्स से कंट्रोलर ऑब्जेक्ट तक ले जाना है।
यह सब है, MainMenu.nib (फ़ाइल => सहेजें) सहेजें और Xcode पर वापस लौटें।
Xcode में, कंट्रोलर फ़ाइल को खोलें और संदेश के कार्यान्वयन का वर्णन करें:

प्रोजेक्ट सहेजें, बिल्ड एंड गो पर क्लिक करें और प्राप्त आवेदन प्राप्त करें:

एडिट बॉक्स में कुछ दर्ज करें और Enter दबाएं, यहां परिणाम है:

इंटरफ़ेस बिल्डर की शक्ति
और अब मैं आपको दिखाऊंगा कि कैसे आईबी जीवन और कोड की मात्रा को सरल बना सकती है। हम लगभग एक एप्लिकेशन बनाएंगे (लगभग इसलिए कि हम इसे एक पूर्ण एप्लिकेशन में संकलित करते हैं)। यह क्या करेगा? संपादन फ़ील्ड में स्लाइडर की स्थिति प्रदर्शित करें और बंद करने के लिए एक बटन है।
तो चलिए शुरू करते हैं। इंटरफ़ेस बिल्डर खोलें, फ़ाइल => नया, "विंडो" चुनें और "चुनें" पर क्लिक करें, "शीर्षक रहित" विंडो प्राप्त करें, हमारी खिड़की और खिड़की की तैयारी को दर्शाते हुए, क्षैतिज स्लाइडर, उस पर फ़ील्ड और बटन को संपादित करें, और गुणों में "बंद करें" कहें। »:

अब हम _from स्लाइडर को edit_field_ पर संचार कर रहे हैं, ड्रॉप-डाउन सूची में LMB जारी करने के बाद, "takeDoubleValueFrom:" चुनें:

इसी तरह, हम बटन को "अनटाइटल्ड" विंडो (एक रेड वन-यूनिट क्यूब) से "फर्स्ट रिस्पॉन्डर" ऑब्जेक्ट के टर्मिनेट इवेंट के साथ जोड़ेंगे।
अब फ़ाइल => सिमलेट इंटरफ़ेस, हमें एक व्यावहारिक अनुप्रयोग का एक प्रोटोटाइप मिलता है: जब आप स्लाइडर की स्थिति बदलते हैं, तो संपादन फ़ील्ड में संख्या बदल जाती है, जब आप बंद करते हैं, तो एप्लिकेशन बंद हो जाता है।
इस तरह आप आसानी से कोड की कई पंक्तियों को लिखने से खुद को बचा सकते हैं।
और अगर किसी को अभी तक इस पर यकीन नहीं हुआ है, तो इस वीडियो को देखें। इसमें, HE (नहीं, RMS नहीं) स्वयं इंटरफ़ेस बिल्डर की पूरी शक्ति बताता है और दिखाता है (हालांकि इससे पहले कि इसे 30 मिनट के NextSTEP PR में लिया गया):
पुनश्च: आपके ध्यान के लिए धन्यवाद