[Powered by Google Translate] [संगोष्ठी] [iOS: एक मालिक की तरह क्षुधा लेखन] [टॉमी MacWilliam] [हार्वर्ड विश्वविद्यालय] [यह CS50 है.] [CS50.TV] सही, हर कोई, IOS के लिए आपका स्वागत है: एक मालिक की तरह क्षुधा लेखन. इस संगोष्ठी में iPhone के लिए क्षुधा लेखन पर ध्यान केंद्रित करने के लिए जा रहा है और बदले में iPad के लिए क्षुधा लेखन, और इसलिए हम मूल रूप से के माध्यम से चलने के लिए जा रहे हैं कैसे एक app बनाने के लिए कुछ अलग उदाहरणों, टिक टीएसी को पैर की अंगुली की तरह एक सरल खेल है, या यदि आप समाचार पाठक के कुछ प्रकार की तरह एक app बनाने में अधिक रुचि रखते हैं या कुछ और है कि मैं इंटरनेट के रूप में अच्छी तरह से है कि बारे में बात करेंगे के साथ सूचना का आदान प्रदान. यहाँ अपने संक्षिप्त एजेंडा है. IOS क्षुधा एक उद्देश्य सी बुलाया भाषा में लिखा जाता है, और इसलिए यह एक छोटी सी के समान है, लेकिन वास्तव में नहीं है सब पर सा है, तो हम भाषा के बारे में खुद को एक छोटा सा बात कर रहा हूँ और फिर इस app XCode कार्यक्रम बुलाया का उपयोग करने के लिए iPhone क्षुधा का निर्माण कैसे, अगर आप अभी तक डाउनलोड नहीं किया है डाउनलोड अब शुरू करने के लिए स्वतंत्र महसूस हो रहा है. यह कई गीगाबाइट है. यह App स्टोर पर मुक्त होना चाहिए, तो आप एक मैक है की आवश्यकता होगी आदर्श ओएस एक्स के नवीनतम संस्करण चला यदि आप नहीं कर रहे हैं, कोई समस्या नहीं. हम अपने इस्तेमाल के लिए विज्ञान केंद्र में उपलब्ध Macs साथ XCode स्थापित है, और विकास के लिए उन का उपयोग करने के लिए स्वतंत्र महसूस हो रहा है. यदि आप के लिए एक app बनाना चाहते हैं, लेकिन एक मैक नहीं है, चिंता मत करो. वहाँ उस के लिए परिसर में संसाधनों का बहुत है. और यदि ऐसा है तो फिर हम विभिन्न क्षुधा आप कर सकते हैं 2 बड़ा उदाहरण को कवर करने के लिए जा रहे हैं. उद्देश्य सी तकनीकी सी. के एक सुपर सेट क्या कहा जाता है इसका मतलब है कि किसी भी सी कोड भी मान्य कोड उद्देश्य सी है. इसका मतलब है कि हम वाहिनी की तरह सी. करने के लिए कुछ अतिरिक्त सुविधाओं पर टेप इन सुविधाओं में से कुछ के लिए कभी malloc फिर से लिखने के लिए नहीं होने के शामिल है, भगवान का शुक्र है, कोई उन मूर्ख संकेत के बारे में चिंता कर रहे हैं और उन्हें मुक्त और वह सब सामान आप सी के बारे में नफरत है, और यह की तरह उद्देश्य सी में चला गया. अब, उद्देश्य सी भी एक बहुत बड़ा मानक पुस्तकालय है, तो वहाँ एक बहुत अधिक कार्यक्षमता आप उद्देश्य सी के मुक्त अंदर के लिए मिलता है. याद है जब हम PHP लिख रहे थे, हमने देखा है कि हम से चला गया इस छोटी इन सब पागल चीजें आप कर सकते विशाल पुस्तकालय के लिए भाषा. एक ही बात IOS में होता है. बौद्ध कैलेंडर की तरह बातों के लिए वस्तुओं है, और वास्तव में कुछ भी आप संभवतः उद्देश्य सी के कार्यान्वयन में शायद पहले से ही मौजूद है के बारे में सोच सकते हैं. उद्देश्य सी के उद्देश्य भाग कुछ संदर्भित है वस्तु उन्मुख प्रोग्रामिंग कहा जाता है. यह एक नई अवधारणा की तरह है, लेकिन हम वास्तव में ज्यादातर सीखा है इन अवधारणाओं के एक बहुत पहले से ही. ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के पीछे विचार यह है कि आप संरचना करने के लिए जा रहे हैं इन बातों के आसपास अपने कोड का एक बहुत वर्ग कहा जाता है, और इन कक्षाओं वास्तव structs महिमा कर रहे हैं. एक struct के अंदर हम मूल रूप से यहाँ कहा एक बात है, और इस बात के सदस्यों को हो सकता है. उदाहरण के लिए, एक लिंक सूची में एक नोड अन्य बातों के हो सकता है एक मूल्य की तरह, सूची में अगले नोड के लिए एक सूचक है, और साथ में है कि सूचक और कहा कि मूल्य एक struct के इस एक उदाहरण की रचना की. क्लासेस बहुत समान हैं, को छोड़कर कक्षाएं भी उन के अंदर कार्य हो सकता है. जब हम एक struct की घोषणा की है, हम केवल int n या नोड अगले * कह सकता है. अब उद्देश्य सी के साथ हम वास्तव में कार्य डाल सकते हैं अंदर उन चीजों में से एक है. एक और बात यह है कि कक्षाओं में कर सकते हैं वे अन्य वर्गों से डेटा वारिस कर सकते हैं. उदाहरण के लिए, हम में निर्मित उद्देश्य सी वर्गों का एक गुच्छा पर लग रही होगी. उनमें से एक वर्ग है कि एक स्क्रीन के लिए दृश्य का प्रतिनिधित्व हो सकता है, और इतना कह कर मैं अपना खुद का दृश्य को लागू करना चाहते हैं हम मूल रूप से एप्पल पर किसी पर, शायद सच में अच्छा लोगों का कहना है, मेरे लिए इस वर्ग लिखा है, और यह बटन प्रदर्शित की तरह बातें संभालती या स्क्रीन प्रतिपादन, और हम वास्तव में दुख होगा कि सभी कार्यक्षमता खुद को लागू करने के लिए, और इसलिए बस से डेटा इनहेरीट हम सब कुछ कह सकते हैं कि आप उस वर्ग में किया था मैं भी अपने वर्ग के अंदर करना चाहते हैं, और फिर मैं कुछ अन्य सामान के लिए जा रहा हूँ, अर्थात् एक app को लागू. यही कि शब्द विरासत क्या मतलब है. हम एक और अधिक ठोस उदाहरण देखेंगे. और अंत में, ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के साथ कुंजी है कि यह डेटा encapsulation की ओर जाता है. हमारी समस्या के कुछ सेट हम इन बड़े, वैश्विक चर हो सकता है और हर जगह वैश्विक है, और है कि कैसे हम राज्य का ट्रैक रखना चाहते हैं. कक्षाओं के साथ हम एक वस्तु के अंदर जानकारी encapsulating शुरू कर सकते हैं. यदि हम हमारे app पर एक स्क्रीन है, हम वास्तव में से कोई डेटा की जरूरत नहीं हमारे कि अंदर के अनुप्रयोग में एक और स्क्रीन, और वर्गों के भीतर चीजें encapsulating द्वारा यह वास्तव ओर जाता है ज्यादा बेहतर कोड डिजाइन करने के लिए, और कुछ अतिरिक्त सुविधाओं के साथ संभव है उद्देश्य सी के. Forewarning, उद्देश्य सी के लिए वाक्यविन्यास केले है. यह कुछ भी नहीं है हम पहले देखा है की तरह है, तो यह एक सीखने की अवस्था के लिए इस्तेमाल किया जा रहा है का एक छोटा सा है क्या बिल्ली यह मतलब है? लेकिन एक बार आप पिछले प्रारंभिक सीखने की अवस्था है कि यह सच है, सच में चिकनी क्षुधा लेखन शुरू. एक वर्ग की घोषणा करने के लिए यहाँ कहने की मेरी कक्षा है, यह मौजूद है, और शायद यहाँ कुछ चीजें हैं कि मैं बाद में को परिभाषित करने के लिए जा रहा हूँ, मैं @ अंतरफलक कहने जा रहा हूँ. मैं @ अंतरफलक कहने जा रहा हूँ. मैं अपनी कक्षा एक नाम देने के लिए जा रहा हूँ. और फिर बाद में कहीं और मैं अंत @ कहने जा रहा हूँ, @ इंटरफ़ेस और @ अंत के बीच में सब कुछ और मेरी कक्षा के लिए जा रहा है. कि क्या हमारे ज फ़ाइलों के अंदर जा रहा है. सी में वैसे ही जैसे हमारे ज फ़ाइलें मूल रूप से यहां कहा कि कुछ चीजें हैं जो मौजूद होगा. मैं यह जरूरी नहीं कह रहा हूँ कि वे अभी तक क्या, लेकिन संकलक को पता है कि वे मौजूद हैं की जरूरत है. बाद में हमारे मीटर के अंदर फ़ाइलों क्योंकि उद्देश्य सी के लिए मीटर हम वास्तव में जहां को परिभाषित करने के लिए इन कक्षाओं में क्या करते जा रहे हैं. हमारे ग फ़ाइलें बहुत पसंद है, हम कार्यों के लिए एक कार्यान्वयन प्रदान की है. अंदर हमारे. मीटर फ़ाइल की हम यहाँ कहने जा रहे कार्यों के सभी मेरी कक्षा क्या वे सब के अंदर. और अंत में, एक struct के अंदर हम उन घुंघराले ब्रेसिज़ के अंदर कह सकते हैं int n या * अगले नोड, और उद्देश्य सी में हम कीवर्ड @ संपत्ति का उपयोग करने के लिए जा रहे हैं, और यह है कि गुणों को परिभाषित करने के लिए जा रहा है, या गैर कार्य करता है कि मेरी कक्षा का एक हिस्सा हैं. उद्देश्य सी में कार्यों कॉलिंग भी केले है. जब हम सी में कार्यों की घोषणा की हम जैसे कुछ int foo कहा और कोष्ठक खुला और फिर इसे तर्कों की एक सूची दी है. यह वही है जो तरीकों या कार्यों की घोषणा के उद्देश्य सी में की तरह लग रहा है. अगर मैं एक समारोह या एक विधि की घोषणा करना चाहते हैं जहाँ मैं विधि कह रहा हूँ सच में सिर्फ एक समारोह है कि एक वर्ग के एक सदस्य है, विनिमेय की तरह है, लेकिन वास्तव में नहीं तो, तो मेरे विधि के अंदर मैं करने के लिए एक नई विधि बनाने चाहते हैं. यह करने के लिए कुछ भी नहीं लौटने जा रहा है, तो यह प्रकार शून्य से होने जा रहा है. यह मेरे समारोह की वापसी प्रकार है. अब हम parens यहाँ है, क्योंकि मैं नहीं जानता कि. अगले करने के लिए अपने कार्य के नाम पर होने जा रहा है, और फिर अंत में हम जैसे हम सी. में था सिर्फ एक सेमीकोलन यहाँ नया क्या है इस आदमी को यहाँ है. यह हायफ़न वास्तव में आवश्यक है, और यह क्या कहते हैं कि यहाँ इस विधि के एक वर्ग का एक उदाहरण पर बुलाया जाना चाहिए. के बाद हम अपने structs घोषित संभवत: हम कुछ की तरह कहा struct नोड n, और वास्तव में बनाया है कि या उन structs instantiated इतना है कि मैं वास्तव में काम शुरू कर सकता क्या यह के अंदर है, तो इस पानी का छींटा का मतलब है कि हम वर्ग इन्स्तांत सिर्फ हम instantiated की तरह है कि struct इससे पहले कि हम उस पर इस विधि कॉल कर सकते हैं. अगर मैं अपने तरीकों के लिए तर्क जोड़ने शुरू करना चाहते हैं यह और भी अधिक केले हो जाता है. यहाँ मेरे विधि नाम है. तो मैं एक बृहदान्त्र के लिए जा रहा हूँ, और इस कोलन के बाद यह यहाँ का कहना कुछ तर्क आता है. इस विधि में एक तर्क लेता. अपने तर्क के प्रकार एक int है, और उस तर्क के नाम है या चर कि मैं विधि के अंदर का उपयोग शुरू करने के लिए जा रहा हूँ मैं कहा जाता है. फिर, यह विधि है. यह एक तर्क लेता. यदि आप अधिक तर्क जोड़ने शुरू करना चाहते हैं यह अधिक केले हो जाता है में है कि हम इस बृहदान्त्र कि यहाँ का कहना है मेरे तर्कों की सूची में आता है. यह पहला तर्क एक पूर्णांक है. अब, यह दूसरा तर्क दिलचस्प है. चर है कि मैं अपने कार्य के अंदर का उपयोग करने के लिए जा रहा हूँ एक कहा जाता है, तो अंदर मैं अपने कार्य के कह सकते हैं च + 1 = या कुछ और. यहाँ यह बात है कि तर्क या पैरामीटर के लिए मूल रूप से एक कुंजी है. वैसे ही जैसे हम महत्वपूर्ण मूल्य जोड़े था और JSON या साहचर्य arrays की तरह कुछ उद्देश्य सी के लिए कहते हैं, ठीक करने का फैसला किया है, बस इतना है कि यह वास्तव में स्पष्ट है जब आप इन सभी मापदंडों क्या कर रहे हैं एक विधि कॉल मैं वास्तव में उन सभी का नाम करने के लिए जा रहा हूँ. जब आप एक विधि कहते हैं, आप वास्तव में andFloat कहते हैं, और फिर आप इसे पारित अंदर हूँ दिलचस्प है, यह एक नाम नहीं है, लेकिन अन्य मानकों के सभी कर रहे हैं, इसलिए यदि हम एक 3 तर्क था मैं andFloat कह सकते हैं और एक अन्य नाव और इतने पर. जब मैं इन तरीकों फोन यह पाठ्यक्रम केले की है, यदि ऐसा है तो मैं एक वस्तु है, और मैं एक विधि बुलाया foo परिभाषित, और मैं इसे कहते हैं, बजाय कह foo खुला / करीब parens चाहते हैं मैं एक वर्ग को खोलने के लिए जा रहा हूँ. यहाँ मेरे विधि का नाम है. मैं ब्रैकेट बंद करने के लिए जा रहा हूँ, और इस वस्तु है मैं उस पर बुला रहा हूँ. याद है, इन तरीकों के सभी वर्गों के भीतर मौजूद हैं क्योंकि कक्षाएं उन के अंदर परिभाषित तरीकों हो सकता है. यहाँ मैं मनमाने ढंग से कुछ वर्ग की एक वस्तु बना लिया है, और यह करने के लिए वाक्यविन्यास है. वहाँ 2 एक वस्तु बनाने के लिए कदम उठाए हैं. पहले कदम के लिए कहते हैं कि मैं जगह आवंटित करना चाहते है. यह एक malloc के बराबर है. हम malloc और कहने की जरूरत नहीं है. हम मीटर गिरा दिया, यह alloc बनाया, और मीटर के साथ ग प्रतिस्थापित. हम alloc कुछ के बाद हम तो यह इनिशियलाइज़ की जरूरत है. असल में जब आप वस्तुओं को बनाने के लिए कुछ तर्क करना चाह सकते हैं कि कार्यान्वित जब वे पैदा कर रहे हैं, तो आप कुछ मूलभूत मूल्यों में पारित कर सकते हैं या उस तरह कुछ, और इसलिए इस init विधि है क्या वास्तव में ऑब्जेक्ट बनाता है. हम पहली जगह आवंटित करने, जैसे हम सी में किया था, और फिर हम इसे शुरू करेंगे, जो करने के लिए या एक पूरी बहुत कुछ नहीं हो सकता है. तो फिर हम एक वस्तु ओ में इस बात को लौट रहे हैं. एक सितारा यहाँ है क्योंकि यह तकनीकी रूप से एक सूचक है, लेकिन चिंता मत करो, संकेत है कि उद्देश्य सी में एक बड़ा सौदा नहीं कर रहे हैं. अब हम इस NSObject वर्ग बुलाया instantiated है, और यह सिर्फ एक यादृच्छिक वर्ग है कि एप्पल है. हम इस instantiated है, और अब मैं इस वर्ग का एक उदाहरण है इस वस्तु ओ में है, तो इसका मतलब है कि अगर मैं परिभाषित इन तरीकों मैं उन्हें इस तरह से कह सकते हैं. इसी तरह, अगर मैं एक तर्क के साथ एक विधि फोन करना चाहता था तो इस बार विधि है, कि एक तर्क लेता है, और यहाँ baz: qux विधि, तो यह 2 तर्क लेता है. यह इस वस्तु ओ पर एक समारोह बुला रहा है. मतलब होता है? वाक्यविन्यास समझ बनाने के लिए करना चाहिए, लेकिन आप की तरह इसकी आदत हो. ठीक है, चलो कुछ चीजें है कि उद्देश्य सी में बनाया जाता है के बारे में बात करते हैं यह जरूरी है कि सी. में नहीं बनाया गया था सी में हम किस तरह का इन बेवकूफ चरित्र arrays के रूप में तार के साथ सौदा किया था, और यह वास्तव में गुस्सा है. उद्देश्य सी उन सब हमारे लिए में बनाया गया है, और यह में बनाया गया है इस NSString नामक वर्ग का उपयोग कर. जब मैं एक NSString हम और अधिक रहस्यमय वाक्यविन्यास है बनाना चाहते हैं. बजाय कह 'CS50 "हम @" CS50 "कहते हैं और यह सिर्फ उद्देश्य सी में तार की घोषणा करने के लिए वाक्यविन्यास है. यह अत्यंत भूलना आसान है, ऐसा नहीं है. अब एक बार मैं यह है, यह एक स्ट्रिंग है, लेकिन नोटिस यह वास्तव में सिर्फ एक वस्तु है. मैंने कहा NSString है, जिसका मतलब है मैं वर्ग instantiated NSString, जो किसी और मेरे लिए लिखा है कहा जाता है, और वे इसके बारे में बहुत अच्छे थे, और अब मैं उस पर तरीकों बुला शुरू कर सकते हैं. अगर मैं इस वस्तु पर विधि लंबाई को बुलाओ यह मेरे लिए स्ट्रिंग की लंबाई वापस जा रहा है. यह सी में strlen की तरह है यह 4 लौटेंगे. इसी तरह, एक और तरीका है मैं के बारे में ध्यान करना चाहते हो सकता है इस characterAtIndex है. यह एक तरीका है कि इस स्ट्रिंग पर कहते है मैं आप 0 चरित्र पाने के लिए करना चाहते हैं, और इसलिए यह मेरे चरित्र ग लौटेंगे, और इन तरीकों में से एक पूरी गुच्छा है कि तुम सच में आसानी से गूगल कर सकते हैं. एप्पल प्रलेखन महान है, और हम एक बिट में उस पर एक नज़र रखना होगा. उन तार कर रहे हैं. हम भी चर आकार arrays का निर्माण किया है. सी में याद है जब हम एक सरणी की घोषणा हम कहते हैं कि तुम 5 तत्वों, कहानी का अंत करने के लिए किया था. जब हम जावास्क्रिप्ट और PHP मिला हम शुरू कर सकता है तत्वों को जोड़ने या आगे बढ़ तत्वों की तरह बातें कर रहे हैं. हम उद्देश्य सी में एक ही कर सकते हैं. के बजाय सामान्य सी रास्ते में एक सरणी बनाने हम फिर से एक और NSMutableArray वर्ग बुलाया है. वहाँ भी NSArray है, और यह मूल रूप से कुछ सरणी encapsulate जा रहा है. यह कहते हैं पहली बात मैं करना चाहता है मैं आवंटित करना चाहते हैं एक नई सरणी के लिए अंतरिक्ष, और उसके बाद मैं इसे आवंटित मैं तो इसे इनिशियलाइज़ की जरूरत है. फिर, बस इन 2 तरीकों बुला. अब यह है कि इस वस्तु के अंदर एक मतलब मैं एक खाली सरणी वहाँ बैठे है. अगर मैं इस सरणी के लिए कुछ जोड़ना चाहते हैं, तो मैं addObject विधि कॉल कर सकते हैं. मैं सरणी के लिए एक वस्तु जोड़ना चाहते हैं, और मैं CS50 स्ट्रिंग जोड़ना चाहते हैं. अगर मैं इसके विपरीत दूर है कि मैं कह सकता हूँ मैं चाहता हूँ सरणी पर पहले स्थान पर वस्तु को हटाने या एक आपत्ति है. मतलब होता है? ठीक है, आप की तरह इस वर्ग कोष्ठक बात के लिए इस्तेमाल किया. वैसे, एप्पल के पुस्तकालयों के एक बहुत कुछ के अंदर आप इस NS देखेंगे. एन एस वास्तव में अगला कदम है, जो स्टीव नौकरियाँ पहली कंपनियों में से एक थी के लिए खड़ा है, और कहा कि जहां वह वास्तव में कोड का एक बहुत लेखन शुरू कर दिया मैक ओएस एक्स और अन्य सामान के सभी के लिए आधार की तरह के रूप में, और इसलिए इस NS यह अच्छा विरासत की तरह एक पहले कंपनियों के लिए बाहर चिल्लाओ वापस जब एप्पल पहले से शुरू किया गया था. यह हर जगह है. चलो एक और अधिक समग्र उद्देश्य सी उदाहरण पर एक नज़र रखना. यहाँ मैं XCode के अंदर हूँ. यहाँ लाने के लिए, मैं पहली बार App स्टोर से XCode डाउनलोड, इसे खोल दिया, और फिर मैं ऊपर चला गया फाइल करने के लिए यहाँ, यहाँ पर नया, और फिर इस परियोजना के लिए. , के बाद मुझे लगता है कि मैं इन सभी विकल्पों मैं क्या बनाना चाहते हैं और इसलिए हम बाद में इन विकल्पों पर एक नज़र ले जाऊँगा, लेकिन सिर्फ इस उदाहरण के लिए, क्योंकि हम वास्तव में एक app अभी तक नहीं जा रहे हैं, मैं यहाँ आया था, और मैं कमांड लाइन उपकरण कहा, और यह एक app है कि मैं कमांड लाइन पर चला सकता है जैसे हम सी से चल रहा है कि कैसे मैं इस परियोजना बनाया, और अब मैं यहाँ हूँ, तो इस फाइल पर पहले देखो, और यह बहुत परिचित दिखना चाहिए. मैं एक int नाम है. मेरे दोस्त argc, मेरे अन्य दोस्त argv है. और इसलिए हम देख सकते हैं कि यह मेरा पहला उद्देश्य सी आवेदन के लिए प्रवेश बिंदु है. यहाँ हम अब के लिए इस की उपेक्षा कर सकते हैं. यह मूल रूप से कुछ स्मृति प्रबंधन सामान है कि आप वास्तव में नहीं होगा कभी के बारे में चिंता करने की ज़रूरत है. चलो इस 1 ब्लॉक में यहाँ देखो. यह पहली पंक्ति, अगर मैं कहना है कि छात्र * ऐलिस = [[छात्र alloc init]] कर रही है कि क्या है? यहाँ यह पहला छात्र है, यह शायद एक वर्ग है. यह एक वर्ग है कि एप्पल ने लिखा है, नहीं है, लेकिन यह एक वर्ग है कि मैं ने लिखा है. पहली बात मैं करना चाहता है मैं एक नए छात्र के लिए जगह आवंटित करना चाहते हैं, और फिर मैं यह इनिशियलाइज़ करना चाहते हैं, तो यह मुझे वापस देता है इस नए छात्र वस्तु है, और मैं एक चर बुलाया ऐलिस में इस संग्रहीत कर रहा हूँ. कि वर्ग कहां से आया? खैर, बाईं ओर यहाँ पर ये मेरा परियोजना के अंदर अलग अलग फ़ाइलों के सभी कर रहे हैं. हम यहाँ देख मैं एक Student.h और एक Student.m कर सकते हैं. ज. फ़ाइल याद है, जहां मैं चीज़ों के सभी की घोषणा कि कक्षा के भीतर मौजूद होगा. चलो उस पर एक नज़र रखना. ठीक है, यहाँ हम इस @ अंतरफलक है, और यह कहते हैं कि यहाँ आता है सब कुछ है कि मेरी कक्षा के भीतर मौजूद होगा की घोषणाओं. तो फिर मैं एक बृहदान्त्र है. तब मैं इस NSObject बात है. इस बृहदान्त्र हम थोड़ा पहले चर्चा कर रहे थे कि विरासत बिट का प्रतीक है. यह कहना है कि सब कुछ एक NSObject कर सकते हैं जहां NSObject इस वर्ग किसी और ने लिखा है, सब कुछ इस NSObject कर सकते हैं कि मैं ऐसा करने में सक्षम होना चाहते हैं. कह: NSObject इसका मतलब है कि मैं मूल रूप से एक अन्य वर्ग की कार्यक्षमता के सभी विरासत में मिला. कि वास्तव में मुझे विभिन्न तरीकों और गुण है कि मैं का उपयोग कर सकते हैं की एक पूरी गुच्छा दिया. यहाँ नीचे मैं 2 गुण पैदा कर रहा हूँ. कि मेरे छात्र का मतलब है, अगर यह एक struct थे, इन 2 बातें होगा मेरे struct के अंदर है, इसलिए हर छात्र को एक नाम है कि एक स्ट्रिंग है, और एक छात्र भी एक ग्रेड, जो एक int है. अंत में, यहाँ नीचे मैं अपने छात्र के लिए एक विधि बनाने के लिए जा रहा हूँ. मैं अपने तरीके से कहा जाता है, initWithName, और यह एक तर्क लेता है, और कि तर्क एक स्ट्रिंग है, और मैं यह कहा जाता है नाम. अब कैसे हम वास्तव में इस वर्ग लागू देखो. यहाँ, अब मैं मेरे मीटर फ़ाइल के अंदर हूँ, लागू करने के लिए कर रहा हूँ, मुझे लगता है. मैं अपने कार्यान्वयन है, अपने अंत, और यहाँ है जहाँ मैं वास्तव में परिभाषित कर रहा हूँ initWithName क्या करता है. मैं initWithName, मेरे पैरामीटर का नाम, और फिर इस वह जगह है जहाँ मैं वास्तव में एक छात्र का निर्माण कर रहा हूँ, और इसलिए यह एक छोटा सा गुप्त है, लेकिन इस boilerplate की तरह है कि आप अपने भवन निर्माताओं में शामिल करना चाहते हैं. इस initialization समारोह, initWithName, निर्माता का एक प्रकार है. आप मूल रूप से एक नए छात्र वस्तु का निर्माण कर रहे हैं और शायद यह के अंदर कुछ डेटा भेजने. पहली बात मैं करना चाहता है मैं इस सुपर बात पर init कॉल करना चाहते हैं. याद रखें कि जब मैं ज. फ़ाइल में कहा कि यहाँ वापस कि सब कुछ एक NSObject एक छात्र भी है. इसका मतलब है कि जब मैं एक छात्र मैं भी क्या करने की जरूरत है बनाते हैं यह सुनिश्चित कर लें कि NSObject है कि मैं है कि डेटा के सभी से इनहेरीट रहा हूँ भी ठीक से प्रारंभ है. मैं कहने की ज़रूरत क्या इस सुपर है वास्तव में माता पिता के वर्ग का उल्लेख करने के लिए जा रहा है कि मैं से इनहेरीट रहा हूँ, तो मुझे यकीन है कि मैं इनिशियलाइज़ बनाना चाहते हैं सब कुछ है कि मैं के आधार पर कर रहा हूँ इससे पहले कि मैं इसे इस्तेमाल करने की कोशिश कर रहा शुरू. तो अगर कि initialized सही ढंग से यह कह रही है की तरह है यदि malloc अशक्त वापस नहीं किया तो मैं कुछ संपत्तियों की स्थापना शुरू कर सकते हैं. जावास्क्रिप्ट और PHP में हम इस कीवर्ड बुलाया था, और यह एक वर्ग के वर्तमान उदाहरण के लिए भेजा. उद्देश्य सी में हम इस आत्म कहते हैं. जब मैं कहता self.name, इसका मतलब है कि वस्तु मैं सिर्फ बनाया था जब मैं ने कहा कि छात्र alloc init, कि एक वस्तु मुझे वापस दे रहा है. इसका मतलब है कि मैं उस वस्तु का नाम निर्धारित करना चाहते हैं मैं जो कुछ भी बस अंदर पारित बस सी में पसंद है, हम इस बिंदु के साथ सदस्यों का उपयोग करने के लिए, तो self.name छात्र वस्तु का नाम कहते हैं अब जो भी हो तुम सिर्फ अंदर पारित करने के लिए जा रहा है और इसलिए अंत में, मैं इसे वापस तो मैं वास्तव में कुछ वापस प्राप्त कर सकते हैं. प्रश्न? ठीक है, तो इस आत्म = सुपर init, अगर आप पूरी तरह से विरासत सामान समझ में नहीं आता है चिंता मत करो. बस पता है कि अगर तुम कभी अपने खुद के init विधि बनाना चाहते हैं तो बस ऐसा है कि, और तुम जाने के लिए अच्छा होगा. हाँ >> [छात्र] क्या अगर स्वयं का क्या मतलब है? इसका मतलब यह है जब हम कुछ हम हमेशा जाँच अगर यह अशक्त करने के लिए बराबर था malloc, और अगर यह शून्य था, तो हम बाहर हुआ. यह एक ही बात है, क्योंकि इस रिटर्न अशक्त अगर है, तो हम शायद seg गलती के लिए जा रहे हैं अगर हम यह हेरफेर करने की कोशिश कर रहा शुरू. कि हमारे छात्र वर्ग है. इसका मतलब है कि हम एक दो तरीके से हमारे छात्रों को हस्ताक्षर कर सकते हैं. अगर मैं कहूँ कि छात्र alloc init मुझे लगता है कि विधि का उपयोग नहीं कर रहा हूँ कि मैं सिर्फ लिखा, और इसके बजाय मैं बस alice.name कह सकते हैं, और अब मैं करने के लिए है कि संपत्ति के नाम सेट करने के लिए जा रहा हूँ. इसी तरह, अगर मैं उस initWithName विधि का उपयोग करना चाहते हैं मैं बस alloc कहते हैं, कर सकते हैं और फिर बजाय init कह मैं कि तरीका है कि मैं अभी बनाया कॉल करने के लिए जा रहा हूँ, और मैं बॉब में पारित करने के लिए जा रहा हूँ. इस बिंदु पर, इस वस्तु बॉब एक ​​नाम बॉब के लिए बराबर है. ठीक है, यहाँ नीचे मुझे लगता है कि NSMutableArray है कि हम पहले से कम देखा का उपयोग कर रहा हूँ. मैं space.Then का आवंटन कर रहा हूँ मैं एक नई सरणी आरंभ कर रहा हूँ. मैं यह करने के लिए 2 बातें जोड़ने के लिए जा रहा हूँ. इस सरणी अब छात्र वस्तुओं रखती है. सूचना है कि कहीं मैं कहना है कि यह छात्रों के एक सरणी है किया है. मैंने कहा कि यह एक सरणी, अवधि है. तो मैं के अंदर जो कुछ भी रख सकते हैं कि मैं चाहता हूँ. यहाँ मैं 2 वस्तुओं है. अंत में, मैं यहाँ एक और वस्तु है, इस TF. TF.h में यहाँ पर मूल रूप से एक ही बात है. मैं NSObject से, और जिस तरह से इनहेरीट कर रहा हूँ, जब आप कक्षा बनाने के लिए यह सब आप के लिए किया जाता है, इंटरफ़ेस बॉयलरप्लेट के इस तरह. यह छात्रों की एक संपत्ति है. मैं एक दो तरीके यहाँ है कि वास्तव में एक पूरी बहुत कुछ नहीं है, और तो इसका मतलब है कि मैं इस TF वस्तु बनाने के बाद मैं इस तरह से उस पर इस विधि ग्रेड कॉल कर सकते हैं. उद्देश्य सी वाक्यविन्यास पर कोई सवाल है इससे पहले कि हम कुछ और आगे बढ़ शुरू दिलचस्प क्षुधा विकास सामान? ठीक है, तो हम वास्तव में एक iPhone app. अपने iPhone app के मुख्य वर्गों है कि आप अंदर उपयोग कर सकता हूँ दृश्य नियंत्रकों को कहा जाता है, और एक दृश्य नियंत्रक मूल रूप से एक सिंगल स्क्रीन का प्रतिनिधित्व करता है अपने अनुप्रयोग के अंदर, यदि ऐसा है तो मैं संगीत app पर उदाहरण के लिए, हूँ, एक दृश्य नियंत्रक दृश्य है जिसमें मैं अपने iPhone पर सभी गीतों को देखने का प्रतिनिधित्व कर सकता है. एक अन्य दृश्य नियंत्रक जब मैं एक गाना क्लिक करें और यह खेल शुरू हो सकता है या के रूप में मैं नीचे कलाकारों में ड्रिलिंग कर रहा हूँ. उन विभिन्न स्क्रीन के प्रत्येक एक अलग दृश्य नियंत्रक के रूप में प्रतिनिधित्व किया जा सकता है, और एक दृश्य नियंत्रक वास्तव में सिर्फ एक वर्ग का कहना है कि यह कैसे काम करता है स्क्रीन है. एक दृश्य नियंत्रक के अंदर हालात, हम गुण है करने के लिए जा रहे हैं, तो एक बटन की तरह बातें करने के लिए हमारे दृश्य नियंत्रक के एक संपत्ति होने जा रहा है. हम भी तरीके हैं के लिए जा रहे हैं, और ये मूल रूप से कर रहे हैं घटना संचालकों. इस विधि का कहना है कि जब आप इस बटन को दबाएं मुझे कुछ करना चाहते हैं, और अंत में फिर से, हम इस आत्म कीवर्ड का उपयोग किया जाना वर्तमान उदाहरण का उपयोग करने के लिए जा रहे हैं. IOS में इंटरफेस का निर्माण वास्तव में सच है, वास्तव में आसान है. वे यह अच्छा खींचें और ड्रॉप इंटरफ़ेस बिल्डर बुलाया इंटरफेस है, और 2 मूल अवधारणाओं कि अपने उद्देश्य सी ऊपर इंटरफ़ेस बिल्डर तार IBOutlet और IBAction हैं. एक IBOutlet बस का कहना है कि यदि आप एक संपत्ति है कि एक बटन की घोषणा, और आप इसे अपने वास्तविक UI में कुछ करने के लिए हुक चाहते, आप कहते हैं कि यह एक दुकान के लिए जा रहे हैं. इसी तरह, अगर आप कोई ईवेंट हैंडलर का प्रतिनिधित्व करना चाहते हैं तो आप कहते हैं कि यह एक कार्रवाई करने के लिए जा रहे हैं. वास्तव में इस चित्रमय प्रतिनिधित्व तार और अपने कोड यह सच है, वास्तव में सरल है. अगर आप एक IBOutlet संलग्न करना चाहते हैं, तो सब तुम्हें क्या करना है आप बादनियंत्रण और हम यह बहुत जल्दी का एक उदाहरण देखेंगे. आप क्लिक नियंत्रित करते हैं कि जहां यह देखें नियंत्रक का कहना है. आप इंटरफ़ेस में खींचें जा रहे हैं, या इसके विपरीत, अगर आप को किसी ईवेंट हैंडलर हुक करना चाहते हैं आप अंतरफलक से खींचें जा रहे हैं दूसरी दिशा में. चलो वास्तव में एक सरल iOS उदाहरण पर एक नज़र रखना. चलो एक नई परियोजना बनाने. मैं करने के लिए आवेदन करने के लिए यहाँ आने के लिए जा रहा हूँ, और मैं सिंगल अनुप्रयोग के लिए जा रहा हूँ. मैं अगले क्लिक करने के लिए जा रहा हूँ. मैं अपनी परियोजना को एक नाम दे दूँगा. मैं इसे नमस्ते फोन करता हूँ. दिलचस्प बात यह है कि, एप्पल मानती है कि आप एक उत्पाद बना रहे हैं ताकि आप इसे बेचते हैं और वे पैसे कमा सकते हैं कर सकते हैं. यहाँ नीचे मैं कहना है कि यह एक iPhone app है करने के लिए जा रहा हूँ. आप एक iPad अनुप्रयोग बनाने के लिए कर सकते हैं, या अगर आप उन क्षुधा में से एक बनाना चाहते हैं कि दोनों उपकरणों का समर्थन करता है कि आप भी कर सकते हैं. ये हैं क्या आप अपने checkmarks की तरह देखने के लिए करना चाहते हैं. आप storyboards, जो हम बाद में देखेंगे का उपयोग करना चाहते हैं, और आप निश्चित रूप से करने के लिए स्वत: संदर्भ गिनती का उपयोग करना चाहते हैं, जो एक अच्छी सुविधा है कि आप malloc और मुक्त कहना होने से रोकता है. जब तक आप malloc और मुक्त कॉल करना चाहते हैं, तो मैं इस जाँच छोड़ना होगा. मैं अगले क्लिक करें, और अंत में, यह मुझे पूछने के लिए जा रहा है, जहां मैं इसे बचाने के लिए करना चाहते हैं. मैं बनाने के लिए मारा, और यहाँ हम चले. मैं एक नई परियोजना बनाया. बाईं तरफ यहाँ पर सभी फ़ाइलों कि मेरी परियोजना के अंदर हैं, नोटिस और कहा कि मैं एक पूरी गुच्छा मिला है, और भी मैं कुछ नहीं कर. IOS महान है. उदाहरण के लिए, यहाँ इस ViewController.h, यह मेरी पहली दृश्य नियंत्रक का प्रतिनिधित्व करने जा रहा है, तो अपने अनुप्रयोग के अंदर 1 स्क्रीन. अब हम जानते हैं कि यह क्या कह रहा है. हम कह रहे हैं मैं इस वर्ग ViewController बुला रहा हूँ, और एक ViewController सब कुछ है कि एक UIViewController करता है, और यह, फिर से, कुछ वर्ग है कि एप्पल ने लिखा है कि हमारे लिए काम सामान का एक बहुत कुछ करता है स्क्रीन प्रदर्शित करना. यहाँ है जहाँ मैं वास्तव में परिभाषित मेरे विचार नियंत्रक क्या करता है शुरू कर सकते हैं, और यह पता चला है कि मैं वास्तव में इस की कोई जरूरत नहीं है. यह boilerplate कोड है कि एप्पल मुझे मुक्त करने के लिए देता है. मैं कि पहली पंक्ति की जरूरत है, या मैं एक वर्ग नहीं है, तो हम उससे छुटकारा पाने के लिए और इस से छुटकारा मिल सकता है. ठीक है, तो यह मेरे खाली स्क्रीन है. अब चलो इस MainStoryboard.storyboard पर क्लिक करें, और यह है जहाँ यह दिलचस्प प्राप्त करने के लिए शुरू होता है. यह मेरे app पर पहली स्क्रीन का प्रतिनिधित्व करता है. अगर मैं एक बटन को जोड़ना चाहते हैं, HTML में मैं एक बटन टैग बनाने के लिए किया था. Android में आप एक बटन टैग बनाने के लिए किया है, लेकिन IOS में अगर मैं बस यहाँ नीचे आने के नीचे सही और अगर मैं यहाँ इस 3 एक पर क्लिक करें जहाँ यह वस्तुओं कहते हैं, और मैं नीचे स्क्रॉल करने के लिए, कर सकते हैं या मैं बटन के लिए खोज शुरू कर सकते हैं. और देखो, एक बटन है, यदि ऐसा है तो मैं वास्तव में खींचें और यह सही ड्रॉप वहाँ, मैं सिर्फ अपने app पर इस स्क्रीन पर एक बटन जोड़. अगर मैं पाठ को बदलना चाहते हैं, मैं इसे डबल क्लिक कर सकते हैं, कुछ मोहक की तरह कहते हैं, "मुझे प्रेस." ठीक है, अब अगर मैं इस अनुप्रयोग चलाने, तो हम यह संकलन, तो इसे चलाने के लिए मैं ऊपर छोड़ दिया में खेलने बटन क्लिक करें, और वहाँ मेरे app है. मैं कुछ भी नहीं था, और मैं एक प्यारी लग रही iPhone app है. अगर मैं इसे रोकना चाहते हैं, तो आप रोक बटन क्लिक कर सकते हैं क्योंकि यह अधिक मज़ा है. चलो का कहना है कि मैं वास्तव में कुछ करना चाहते हो सकता है जब मैं इस बटन को दबाएं. करना है कि मैं क्या करने की जरूरत है कि मैं बनाने की जरूरत एक नई घटना हेन्डलर या एक कार्रवाई. इसका मतलब है कि मैं कुछ तरीका है कि मैं करने के लिए कहा जा चाहते हैं बनाने की जरूरत है जब मैं बटन दबाते हैं, तो हम एक नई विधि बनाने. मैं ViewController.h के अंदर हूँ. मैं कहना है कि एक विधि मौजूद है की जरूरत है. मैं पहली बार एक हायफ़न की जरूरत है क्योंकि मैं दृश्य नियंत्रक पर इस फोन करने जा रहा हूँ. मैं यह एक प्रकार देने की जरूरत है. इस के प्रकार कि IBAction बात है कि हम पहले देखा होने जा रहा है. यह एक घटना हेन्डलर है तो, यह एक IBAction वापस जा रहा है, और इस XCode के लिए एक संकेत कहना है कि यह कुछ मैं करने के लिए कुछ तार करना चाहते है. मैं इसे buttonPressed अर्धविराम, जैसे एक नाम दे सकते हैं. अब मैं मेरी कक्षा के अंदर एक नई विधि की घोषणा की है. मैंने कहा है इस विधि के लिए मौजूद है. अब चलो ViewController.m में आने, और कहते हैं कि इस विधि क्या कर सकते हैं. अगर मैं टाइपिंग शुरू, उदाहरण के लिए buttonPressed (शून्य) नोटिस XCode वास्तव में अच्छा है और मेरे लिए autocompletes. यह वास्तव में अद्भुत है. यहाँ ध्यान दें कि. मीटर फ़ाइल के अंदर मैं भी शून्य कह सकते हैं, और इस वजह से है कि IBAction वास्तव में एक प्रकार की नहीं है. यह वास्तव में कहीं परिभाषित hashtag एक शून्य हो, और फिर, यह सिर्फ XCode के लिए एक संकेत है कि कहते हैं मैं इस एक घटना हेन्डलर होना चाहते हैं, और हम एक दूसरे में क्यों देखेंगे. जब इस बटन दबाया जाता है मैं कुछ करने के लिए कष्टप्रद करने के लिए जा रहा हूँ एक पॉपअप प्रदर्शित करना. ऐसा करने के लिए है कि मैं इस वर्ग का एक नया उदाहरण UIAlertView बुलाया बना सकते हैं, और यह एक वर्ग है कि एप्पल ने लिखा है कि कष्टप्रद पॉपअप प्रदर्शित करने के लिए जा रहा है है. हम इस पॉपअप चेतावनी कहते हैं, और मैं 2 कदम है, इस वस्तु बनाने के लिए याद है,. पहली बात मैं करने की ज़रूरत जगह आवंटित करने के लिए है. मैं एक UIAlertView चाहते. मैं करने के लिए जगह आवंटित करने के लिए करना चाहते हैं. यह मेरी पहली विधि है. मेरी अगली विधि है मैं यह इनिशियलाइज़ करना चाहते हैं, और इसलिए मैं इस बड़े, लंबे initWithTitle विधि बुलाया है. वह मूल रूप से नियंत्रित करने के लिए क्या कहते हैं इस पॉपअप जा रहा है. अपने पॉपअप के शीर्षक हैलो हो सकता है. इस पॉपअप का संदेश "यह iOS है कर सकते हैं." प्रतिनिधि बात है, मैं नहीं जानता कि वह क्या है. चलो यह कुछ भी नहीं कहना है. अब बटन कि दिखाई जा रही है की तरह "यह निश्चित है," कुछ कह सकते हैं और मैं वास्तव में किसी भी अन्य बटन नहीं करना चाहते, तो चलो कि को हटाना और वर्ग को बंद. ठीक है, मैं एक अतिरिक्त एक बनाया. हम वहाँ जाते हैं. यह कैसे मैं एक नया पॉपअप बना सकते हैं. अगर मैं वास्तव में पॉपअप दिखाना चाहते हैं मैं शो विधि कॉल करने के लिए करना चाहते हैं. ऐसा करने के लिए है कि मैं सतर्क और दिखाने को कह सकते हैं, और फिर, autocomplete सुपर अच्छा था. अगर मैं भूल गया कि वह क्या था, अगर मैं बस में टाइप, मैं यहाँ के माध्यम से स्क्रॉल करने के लिए बाहर आंकड़ा यह क्या था, और यह अच्छी तरह से फिल्टर. अब मैं इस नए पॉपअप बनाया. हम प्रतिनिधि क्या मतलब है वापस बाद में आता हूँ, और अब मैं कहना है कि मैं इस विधि को निकाल दिया जाना चाहते हैं जब मैं बटन दबाएँ तो, मैं अपने स्टोरीबोर्ड के लिए वापस आने के लिए जा रहा हूँ, और मैं अब इस IBAction संलग्न करना चाहते हैं. पहली बात तुम करना चाहते हो बटन पर क्लिक करें. जब मैं इस बटन को दबाएं मैं ऐसा करने के लिए कुछ करना चाहते हैं. मैं नियंत्रण करने के लिए नीचे पकड़ करने के लिए नहीं जा रहा हूँ. मैं जा रहा हूँ करने के लिए क्लिक करें और बटन से खींचें यहाँ पर जहां यह देखें नियंत्रक कहते हैं. हम देख सकते हैं कि यह अच्छी तरह से रोशनी. अगर मैं अपने माउस के साथ जाने के लिए मैं अब यहाँ पर इस पॉपअप है, जहां मैं कुछ विकल्प हैं. इनमें से एक की घटनाओं है कि मैं पंजीकरण कर सकते हैं है. ये उन तरीकों को मैं मेरे IBActions के रूप में ज फ़ाइल में घोषित सभी कर रहे हैं. यह कैसे XCode जानता है कि क्या इस छोटे से सूची में दिखाई देनी चाहिए, ताकि बस एक संकेत है. यदि मैं दबाया बटन पर क्लिक करें, अब मैं ईवेंट हैंडलर पंजीकृत किया है. जावास्क्रिप्ट में हम कहते हैं कि मैं कुछ कोड है कि ईवेंट हैंडलर पंजीकृत था. उद्देश्य सी में यह सच था कि आसान है. अगर मैं यह फिर से चलाने के अब जब मैं बटन दबाएँ मेरे ईवेंट हैंडलर आग करने के लिए जा रहा है, और मैं इस पॉपअप पाने के लिए जा रहा हूँ. सुपर, सुपर आसान है. यदि आप कभी घटनाओं है कि करने के लिए पंजीकृत होना होगा की सभी देखना चाहते हैं एक घटक पर अगर मैं इस बटन पर क्लिक करें और मैं यहाँ आने के दाईं ओर के लिए पहले आप यहाँ देख मैं बटन के प्रकार की तरह बातें कर सकते हैं कर सकते हैं, इसलिए यदि आप एक उन मैं या संपर्क बटन जोड़ने चाहते हैं या जो भी हो. अगर मैं सभी घटनाओं है कि इस बटन पर देखना चाहते हैं अगर मैं यहाँ पर दाईं ओर के लिए सभी तरह आया हम यहाँ मैं इन अलग अलग घटनाओं के सभी घटनाओं पर देख सकते हैं. मैं बटन दबाएँ, जब मैं बटन के चलते हैं, जब मैं नल डबल या जो कुछ भी कर सकते हैं, और एक मैं सिर्फ पंजीकृत है इस घटना टच फोन के अंदर, और यह कहते हैं कि जैसे ही मेरी उंगली से बटन आता है घटना है कि आग के लिए जा रहा है, और कहा कि वास्तव में अभी क्या हुआ है. यह डिफ़ॉल्ट बटन दबाया घटना की तरह है. कोई प्रश्न इतनी दूर है? ठीक है, है कि कैसे हम अपने कोड में बातें करने के लिए तार शुरू कर सकते हैं हमारे अंतरफलक के अंदर बातों में. याद है पहली बात हम करना पड़ा कोड को खोजने के लिए गया था, और फिर हम वायर्ड कोड के लिए इंटरफ़ेस, और हमारी पहली अनुप्रयोग है. ठीक है, यह वास्तव में अच्छा था, और हम इस बटन बनाया. क्या होगा अगर हम करना चाहते हैं नहीं करने के लिए गुणों का एक गुच्छा बनाने के लिए है इन बटन का प्रतिनिधित्व? उदाहरण के लिए, टिक टीएसी को पैर की अंगुली में मैं 9 बटन है, और यह सुपर, सुपर करने के लिए खींचें और 9 बार छोड़ दिया है कष्टप्रद होगी या अगर मैं 81 के साथ टिक टीएसी को पैर की अंगुली के बजाय 9 और मैं खींचें और ड्रॉप 81 बार था, और वह लंगड़ा है. हम क्या कर सकते हैं बजाय एक HTML बहुत पसंद है जब हम आईडी और नाम की तरह बातें किया था और हम बातों के लिए खोज कर सकते हैं अपने आईडी द्वारा, वहाँ IOS में एक इसी तरह की धारणा टैग कहा जाता है. टैग केवल एक घटक के लिए एक अद्वितीय संख्यात्मक पहचानकर्ता है. यदि मैं यह कहने के 0 के एक टैग है, उदाहरण के लिए, अगर मैं एक बटन बनाने के लिए और इसे 0 की एक टैग दे, और हम देखेंगे कि कैसे सिर्फ एक दूसरे में करने के लिए है कि, अगर मैं उस बटन को प्राप्त करना चाहते हैं मैं बस कहना मैं फोन करने के लिए करना चाहते हैं कर सकते हैं वस्तु पर यहाँ पर विधि viewWithTag, , उदाहरण के लिए self.view जो वर्तमान स्क्रीन का प्रतिनिधित्व करता है. यदि मुझे लगता है कि viewWithTag विधि कहते हैं, मैं 0 टैग बटन के साथ वापस खींचने के लिए जा रहा हूँ. चलो निर्माण टिक टीएसी को पैर की अंगुली के द्वारा इस पर एक नज़र ले. सबसे पहले, यह मेरी स्टोरीबोर्ड है. मैं इन 10 यूआई बटन बनाया है. सूचना है वे सभी एक ही आकार के हो. अगर मैं इनमें से एक पर क्लिक करें और मैं यहाँ पर यह सही पक्ष पर वापस आते हैं आप देखेंगे कि मैं फ़ॉन्ट यहाँ समायोजित, इसलिए मैं फ़ॉन्ट थोड़ा बड़ा कर दिया है, लेकिन क्या मैं भी किया था कि मैं इस टैग सेट. मैंने कहा कि यह 1 के एक टैग है, और है कि ऊपर छोड़ दिया है. अब, अगर मैं एक बटन क्लिक करें, इस 2 एक यहाँ की तरह, अब आप देखेंगे कि मेरे टैग 2. इन बटनों में से प्रत्येक एक अद्वितीय टैग है, और तो यह बाद में मैं कैसे कर रहा हूँ करने के लिए बातचीत शुरू करने के लिए जा रहा मेरी अनुप्रयोग के साथ. यह एक दृश्य नियंत्रक सभी के अंदर है, लेकिन यहाँ है कि हम क्या है. यहाँ हम 3 गुण है. 1 एक और पिछले एक मेरे बोर्ड के राज्य का प्रतिनिधित्व करने के लिए जा रहे हैं. असल में यह 1 एक एक सरणी का प्रतिनिधित्व जहां Xs और ओएस है. यह एक दूसरे के यहाँ हमें बताता किसकी बारी है. आप देखेंगे कि मैं भी इन बातों को यहाँ. इससे पहले जब हम संपत्ति घोषित की हम उन्हें एक नाम और एक प्रकार दिया. हम भी उन्हें कुछ अतिरिक्त जानकारी दे सकते हैं. यह पहली nonatomic कहते हैं, और यह क्या कहते हैं मूल रूप से केवल एक ही बात कभी एक समय में इस चर का उपयोग करने की कोशिश कर रहा हो जाएगा. आप अधिक जटिल अनुप्रयोगों है कि बहु लड़ी पिरोया है कर सकता है, और इसलिए वापस खरोंच में हम अलग अलग सूत्र था, और विभिन्न sprites एक ही समय में अलग - अलग बातें कर रही हो सकता है. कि अगर मामला नहीं है, जो यह कुछ भी नहीं है कि हम पर देख रही हूँ, अगर हम nonatomic का कहना है कि यह वास्तव में बातें एक छोटा सा तेजी से बनाने के लिए जा रहा है. हम भी इस बात आवंटित, मजबूत या कमजोर कहा जाता है. इस असाइन करने के लिए बस इतना ही कहना है कि यह एक मानक प्रकार है. यह एक वस्तु या एक सूचक नहीं है क्योंकि यह सिर्फ एक bool है, तो bool उद्देश्य सी में बनाया गया है. यह कहते हैं यहाँ संकेत के साथ फैंसी कुछ भी करने की कोशिश नहीं है. यह एक नियमित रूप से पुराने scaler है. मजबूत और कमजोर है, यह कमजोर है कि वास्तव में कहते हैं मैं इस दृश्य नियंत्रक में कुछ करने के लिए की ओर इशारा करते हुए करना चाहते हैं. मैं वास्तव में आवंटित करने के लिए नहीं जा रहा हूँ या यह अपने आप init. इंटरफेस बिल्डर, जब मैं अनुप्रयोग चलाने के लिए, सभी के लिए है कि initialization संभालने जा रहा है. यदि मैं कमजोर कहते हैं, का कहना है कि किसी और को इस का निर्माण किया जा रहा है. अगर मैं मजबूत कहते हैं, यह कहना है कि मैं एक होने जा रहा हूँ कि इस बोर्ड वस्तु बनाने है, और यहाँ तो मैं कुछ और तरीके यहाँ है, उदाहरण के लिए, जब नया खेल बटन दबाया जाता है के लिए एक कार्रवाई, जब किसी भी अन्य बटन दबाया जाता है के लिए एक कार्रवाई, और वगैरह. हम भी टिक टीएसी को पैर की अंगुली के तर्क के ज्यादा में नहीं मिलेगा, हालांकि यह बहुत ही रोमांचक है, लेकिन हम पर एक नज़र रखना कुछ चीजें हैं जो हम IOS के अंदर कर सकते हैं. इस नए खेल विधि नौकरी से निकाला जा रहा है जब भी मैं नया खेल बटन दबाएँ. हुक है कि ऊपर मैं बस मेरे स्टोरीबोर्ड पर आने के. मैं नया खेल पर क्लिक किया. अगर मैं आ सही करने के लिए यहाँ मैं देख सकता हूँ अंदर newGame विधि तार स्पर्श. यही कारण है कि यह करने के लिए निकाल दिया जा रहा है. newGame विधि कुछ सेट करना जा रहा है. यह कहना है कि मैं बोर्ड की स्थिति को स्पष्ट करने के लिए करना चाहते हैं के लिए जा रहा है. इस परिवर्तनशील arrays पर एक अच्छा तरीका है. यह कहना है कि यह अब एक्स बारी है जा रहा है, और अब मैं इस viewWithTag बात का लाभ लेने के लिए जा रहा हूँ. मुझे पता है कि मेरे बटन टैग 1-9, और कहा कि कुछ मैं मनमाने ढंग से उठाया है. अगर मैं प्रत्येक बटन के पाठ को सेट करने के लिए खाली हो चाहते हैं क्योंकि मैं सिर्फ एक नया खेल शुरू कर दिया है और मैं किसी भी नहीं करना चाहती Xs या ओएस पर मैं यह कर सकता छोड़ा जा सकता. मैं कह सकता हूँ कि मैं चाहता हूँ टैग के साथ देखने के लिए, 1, 2, 3, 4 वगैरह. यह एक अलग बटन हर बार खींच जाएगा. यहाँ मैं यह कास्ट करने के लिए UIButton के लिए जा रहा हूँ. वैसे ही जैसे हम ints मंगाई और उपाध्यक्ष के लिए प्रतिकूल डाली जा सकता है यह कहना है कि मैं एक UIButton इस देना चाहते हैं. इसका मतलब है कि इस के प्रकार एक UIButton होगा * संकेत की वजह से है, लेकिन चिंता मत करो, वे डरावना अब और नहीं कर रहे हैं. एक बार जब मैं इस बटन मैं इस पर एक विधि कॉल करने के लिए जा रहा हूँ. इस विधि setTitle forState कहा जाता है, और इसलिए इस कहते हैं मैं बटन का पाठ सेट खाली स्ट्रिंग चाहते हैं, और मैं यह खाली स्ट्रिंग जब यह नहीं दबाया है होना चाहता हूँ. अगर मैं इस विधि का उपयोग कर रहा हूँ, मैं बटन का पाठ बदल सकते हैं के रूप में जल्द ही के रूप में किसी को मारता है, लेकिन हम कहते हैं कि जब बटन वहाँ बैठी है चाहता हूँ मैं पाठ रिक्त होने के लिए करना चाहते हैं. अंत में, हम अपने बोर्ड आरंभ करने जा रहे हैं, और मैं कहना है कि सब कुछ वर्तमान में 0 है जा रहा हूँ, इस बोर्ड ताकि सदस्यों अपरिवर्तनीय एक अस्थायी सरणी है, जिसका मतलब है कि मैं addObject विधि कॉल कर सकते हैं और यह सिर्फ एक 0 अंदर. यही कारण है कि क्या होता है जब मैं एक नया खेल बनाने के. चलो एक दूसरे पर एक नज़र रखना. यहाँ यह विधि IBAction है कि को दबाया जा रहा है है हर बार उन वर्गों में से दबाया जाता है. अब हम कुछ Tic Tac Toe तर्क यहाँ है. हम यह पता लगाने किसकी बारी है, और के आधार पर है कि हम या तो एक एक्स या एक हे सेट, लेकिन हम देखते हैं कि हम इस एक ही घटना हेन्डलर reusing रहे हैं उन बटन के हर एक के लिए. , इसका मतलब है कि मैं शीर्ष बाएँ बटन के लिए एक विधि नहीं है नीचे सही बटन के लिए एक अलग तरीका है, हालांकि मुझे लगता है कि किया जा सकता है. यह वास्तव में अच्छा डिजाइन नहीं होगा. मैं यहाँ क्या कर रहा हूँ मैं वास्तव में निर्धारित करने के लिए जा रहा हूँ बटन दबाया गया था कि क्या टैग है. आपको लगता है कि इस खेल विधि एक तर्क लेता. यह प्रेषक कहा जाता है, और क्या प्रेषक प्रेषक जाता है के लिए जा रहा वास्तव में क्या कार्रवाई पर लिया गया था का प्रतिनिधित्व करते हैं. अगर मैं एक बटन दबाएँ, इस प्रेषक कि UIButton होने जा रहा है कि मैं वास्तव में दबाया जाता है, तो इसका मतलब है कि कि UIButton एक टैग है क्योंकि मैं एक टैग बनाया. अगर मैं टैग पर प्राप्त करना चाहते हैं मैं बस कह सकते हैं मैं प्रेषक का टैग करना चाहते हैं, और फिर, मैं सिर्फ एक UIButton है यह casted. मुझे पता है कि प्रेषक एक UIButton होगा होता है. यह हमेशा के लिए एक UIButton होना जरूरी नहीं है. मैं, उदाहरण के लिए, एक ही घटना हेन्डलर रजिस्टर कर सकते हैं  एक एक बटन है, एक एक स्लाइडर के लिए के लिए के लिए. इस मामले में, मैं जानता हूँ कि वे सभी बटन रहे हैं, तो मैं कहने जा रहा हूँ मैं यह एक बटन होना चाहते हैं, और तो मैं टैग प्राप्त कर सकते हैं, और टैग से अब मैं जानता हूँ जहाँ मैं बोर्ड के अंदर हूँ. तो मैं बस या तो एक्स या हे, बारी फ्लिप कर सकते हैं निर्धारित कर सकते हैं, जांच जो जीता है, वगैरह. यह अब तक पर कोई सवाल? ठीक है, सब कोड हम ऑनलाइन हम बहुत ज्यादा में मिल नहीं करना चाहती तैनात Tic Tac Toe तर्क की, लेकिन अब आपको लगता है कि वास्तव में देख सकते हैं सब हम कर रहे हैं हम इस सरणी पर पाशन कर रहे हैं, तो हम loops के लिए यहाँ की एक जोड़ी है, और हम सिर्फ देखने के लिए तुलना कर रहे हैं हम सभी पंक्तियाँ, या उस तरह कुछ भी स्तंभ में एक मैच में एक मैच है. वास्तव में इस app चलाने के लिए, अगर मैं इनमें से किसी एक बटन पर नल कि खेलने विधि निकाल दिया गया था, तो इसका मतलब है कि मैं सिर्फ सेट बटन एक एक्स के लिए है, इसलिए अब इस बटन एक हे हो सकता है, और इतने पर, और इसलिए है कि हम कैसे इस एक पृष्ठ के अनुप्रयोग के साथ बातचीत शुरू कर रहे हैं. हम कोड पोस्ट करेंगे, तो कि ख़याल स्वतंत्र महसूस हो रहा है, लेकिन अब कुछ क्षुधा है कि सिर्फ एक पृष्ठ से अधिक कर रहे हैं के बारे में बात करते हैं. टिक टीएसी को पैर की अंगुली के रूप में रोमांचक था, IOS के अंदर क्षुधा का एक बहुत कई स्क्रीन के साथ बातें नीचे इन ड्रिल की तरह हैं. पहली अवधारणा है कि हम के बारे में बात करने की आवश्यकता होगी प्रोटोकॉल रहे हैं, और बस एक प्रोटोकॉल तरीकों का एक सेट है कि आप को परिभाषित करने के लिए वादा कर सकते हैं. अगर मैं 2 तरीकों के साथ इस नए प्रोटोकॉल, यह पहली एक बनाने के लिए, अगर रिटर्न प्रकार शून्य है, मैं यह foo बुलाया. यह कोई तर्क लेता है. मैं एक और तरीका है. यह एक int देता. मैं यह बार बुलाया, और यह एक तर्क लेता. यह प्रोटोकॉल है कि SomeProtocol कहा जाता है यहाँ, यह चीजें हैं जो किसी को लागू कर सकते हैं का एक सेट है. मैं इस प्रोटोकॉल के अंदर foo क्या नहीं कहा है. इसके बजाय, मैं सिर्फ इतना कह रहा हूँ आप foo परिभाषित अगर तुम चाहते हो सकता है. अगर मैं एक दृश्य नियंत्रक का निर्माण कर रहा हूँ या एक वर्ग बनाने मैं अंदर कि वर्ग वादा के लागू करने के लिए कर सकते हैं इन तरीकों में से कुछ का कहना है, उदाहरण के लिए अगर, अब यह कहते हैं, मैं तुम्हें एक वादा कर रहा हूँ अंदर है कि मैं इस दृश्य नियंत्रक वर्ग के foo और बार दोनों के लिए परिभाषा है. क्यों कि उपयोगी है? IOS के अंदर घटकों के एक बहुत कुछ इस का लाभ ले डिजाइन पैटर्न प्रतिनिधिमंडल कहा जाता है, और प्रतिनिधिमंडल क्या कहते हैं उदाहरण के लिए, अगर मैं एक पाठ बॉक्स है कि और वहाँ कुछ घटनाओं है कि मेरे पाठ बॉक्स के अंदर पंजीकृत किया जा सकता है, अलग घटनाओं है मैं क्या कर सकता बनाने के बजाय मैं कह सकता इस पाठ बॉक्स के प्रतिनिधि कुछ वस्तु होगी. जब मैं कहता हूं कि यह अब एक प्रतिनिधि है इसका मतलब है कि जब भी कुछ घटना पाठ बॉक्स में निकाल दिया गया है बजाय यह या ऐसा कुछ रजिस्टर यह सिर्फ प्रतिनिधि पर एक विधि कॉल करने के लिए जा रहा है. उदाहरण के लिए, मेरे पाठ बॉक्स के अंदर मैं जब मैं प्रेस के लिए एक विधि है कि नीचे सही में बटन किया, और इसलिए बजाय ईवेंट हैंडलर मैं क्या कह सकता दर्ज की है पाठ बॉक्स, यहाँ एक वस्तु है कि मैं आप पर एक विधि कॉल करने के लिए करना चाहते है हर बार किसी किया बटन प्रेस, और इसका मतलब है कि उस ऑब्जेक्ट के लिए कुछ प्रोटोकॉल को लागू करने के लिए है कहते हैं कि मैं कि किया बटन कार्रवाई को परिभाषित करने के लिए वादा, क्योंकि अगर यह है कि विधि को परिभाषित नहीं करता है और आप किया प्रेस, तो यह भ्रमित किया जा रहा है. चलो एक उदाहरण पर एक नज़र रखना. यहाँ मैं बस एक पाठ बॉक्स है, और यहाँ पर इस पाठ बॉक्स के दाईं ओर गुणों में से एक प्रतिनिधि है. इस वर्ग की एक संपत्ति है. क्या मैं यहाँ किया है मैं क्लिक नियंत्रण है, और मैं यहाँ पर इस जगह से घसीटा दृश्य नियंत्रक, और कहा कि अब इस पाठ बॉक्स के प्रतिनिधि का कहना है दृश्य नियंत्रक होने जा रहा है. इसका मतलब है कि जब कुछ कार्रवाई हो, दर्ज की बजाय अलग घटना संचालकों मैं आप उन्हें प्रतिनिधि को भेजने के लिए करना चाहते हैं. अब चलो मेरे विचार नियंत्रक पर एक नज़र रखना. ज. फ़ाइल के अंदर मैं एक वादा किया है. मैं इस प्रोटोकॉल के अंदर कुछ तरीकों को लागू करने का वादा किया है UITextFieldDelegate, और फिर कहा जाता है, यह सिर्फ कुछ चीजें हैं जो मैं लागू करने के लिए चुन सकते हैं के कुछ सूची है. यदि मैं मेरी. मीटर फ़ाइल में यहाँ आते हैं, मैं एक ऐसी विधि को लागू किया है. मैं इसे textFieldShouldReturn बुलाया है क्योंकि है कि क्या यह प्रोटोकॉल के अंदर बुलाया गया था. और अब जब भी मैं किया है कि पाठ क्षेत्र के अंदर बटन दबाएँ यह है कि क्या करने के लिए बुलाया जा रहा है, तो मैं एक घटना हेन्डलर रजिस्टर नहीं था. मैं प्रतिनिधि जुड़ा हुआ है, और जब भी इस घटना निकाल दिया है इस विधि कि बुलाया मिल जाएगा है, यदि ऐसा है तो मैं यहाँ आने के मेरे स्टोरीबोर्ड और इसे चलाने समय है कि लोड हो रहा है कि हम देख सकते हैं कि यह क्या करता है. अपनी स्क्रीन पर मैं 2 बातें है. मैं इस पाठ क्षेत्र है, और मैं इस लेबल है. मैं बस कह रहा हूँ कि मैं इस लेबल के पाठ करना चाहते हैं जो उपयोगकर्ता पाठ क्षेत्र के अंदर में टाइप करने के लिए बराबर होना. यह अगली पंक्ति यहाँ बस एक तरीका है कि मैं बुला रहा हूँ पाठ क्षेत्र कहते हैं कि मैं आप कीबोर्ड को छिपाने के लिए करना चाहते हैं. यह सिर्फ मनमाना तरीका है कि एप्पल चुना है. फिर, इससे पहले कि मैं मैं कुछ भी करने के लिए सब कुछ तार पड़ा था, तो मैं पहली बार यहाँ आया था. दृश्य नियंत्रक से मैं पाठ बॉक्स पर खींचें. मैं चलते हैं, और मैं यहाँ देख सकते हैं कि मैं इस पाठ क्षेत्र संपत्ति कर सकते हैं पर दृश्य नियंत्रक में यहाँ के बाद से मैं एक संपत्ति को परिभाषित किया गया है कि एक पाठ क्षेत्र के एक IBOutlet है. यह कहना है कि मैं इस संपत्ति तार कर सकते हैं मेरी UI में एक पाठ क्षेत्र. अब जब मैं इस पर क्लिक करें मैं लिखना शुरू कर सकते हैं. अब अगर मैंने किया बटन पर क्लिक करें इस आग के लिए जा रहा है एक घटना है कि मैं अब जवाब कर सकते हैं. कोई घटना संचालकों. यही कारण है कि कैसे मैं सिर्फ उस बटन को किया जवाब. मतलब होता है? यह एक डिजाइन पैटर्न है कि आप कभी भी अपने आप को नहीं मिल सकता है नहीं है अपने खुद के प्रोटोकॉल बनाने, लेकिन सिर्फ इतना पता है कि कुछ अलग IOS के घटकों को अलग अलग तरीकों से घटनाओं रजिस्टर. बटन, उदाहरण के लिए, उन IBActions का उपयोग करें. पाठ क्षेत्रों, दूसरे हाथ पर, प्रतिनिधियों का उपयोग करने के लिए जा रहे हैं. हम देखते हैं और आप दस्तावेज की कि अंदर के सभी देख सकते हैं. वैसे, वहाँ वास्तव में UI सामान की एक टन आप के लिए IOS में बनाया गया है, ऐसा करते हैं, उदाहरण के लिए, जिस तरह से मैं कर दिया है कि नीचे सही पर किया कहना है मैं इस पाठ क्षेत्र को चुना है. मैं यहाँ आया था. मैं थोड़ा नीचे स्क्रॉल करने के लिए महत्वपूर्ण वापसी, और मैं वास्तव में चीजों की एक पूरी गुच्छा बना सकते हैं, जैसे अगर मैं चाहता हूँ कि कहने के लिए आपात स्थिति के बजाय मुझे लगता है कि करने के लिए, जो पूरी तरह से यादृच्छिक है कहते हैं, और मैं क्यों वहाँ एक निर्मित में आपातकालीन कॉल बटन है पता नहीं है, लेकिन वहाँ है, यह वास्तव में छोटे अक्षरों में आपातकालीन कॉल कहते हैं. वहाँ तुम जाओ. निश्चित रूप से IOS में इन विभिन्न विकल्पों में से सभी का पता लगाने. प्रतिनिधियों पर कोई सवाल? फिर से, बस एक दिलचस्प डिजाइन पैटर्न है कि आप के बारे में पता होना चाहिए. ठीक है, चलो अगले तालिका दृश्य पर एक नज़र रखना. एक तालिका दृश्य मूल रूप से वस्तुओं की सूची है कि IOS में सभी जगह पर है. जब आप अपने संपर्कों के सभी के माध्यम से flipping रहे हैं, आप देख रहे हैं पेज की स्थापना, और चीजों की सूची के उस तरह एक तालिका दृश्य कहा जाता है. IOS में एक तालिका दृश्य को लागू करना बहुत आसान है. एक वर्ग है कि कि UIViewController से उतरता बनाने के बजाय जैसे हम इससे पहले कि हम बस के बजाय कहने की ज़रूरत नहीं किया है सब कुछ एक UIViewController मैं करना चाहता है, मैं सब कुछ एक UITableViewController मैं करना चाहता है कहते हैं, बस इतना है कि कुछ अतिरिक्त चीजें हैं जो पूरी तरह से हमारे लिए काम कर रहे हैं कहते हैं. हम बहुत करने के लिए मूल रूप से तालिका के अंदर रिक्त स्थान को भरने के कुछ करने की जरूरत है. आदेश में एक तालिका प्रदर्शित करने के लिए मैं कुछ सवालों के जवाब देने की जरूरत है. पहला सवाल मैं जवाब देने की जरूरत है, कितने वर्गों तालिका में कर रहे हैं? जब आप अपने संपर्कों के अनुप्रयोग के माध्यम से flipping रहे हैं तो आप देखेंगे कि यह एक तरह से है के रूप में द्वारा आयोजित है, तो आप बी एस है, और आपको लगता है कि छोटे उप शीर्षक है. उन में से हर एक वर्ग कहा जाता है. आप कर सकते हैं या इन की आवश्यकता नहीं हो सकता है. पहली बात तुम क्या करने की जरूरत है एक विधि को लागू numberOfSectionsInTableView: tableView बुलाया. यह बस रिटर्न कितने वर्गों आप, तो यह कह सकते हैं एक वापस अगर आप एक बड़ा तालिका दृश्य है. अगला सवाल है कि IOS पता करने की जरूरत है आप कितने पंक्तियाँ है? उदाहरण के लिए, आप एक तालिका दृश्य के माध्यम से flipping रहे हैं. आप गाने की एक निश्चित संख्या या आप देख रहे हैं संपर्कों की एक निश्चित संख्या है. अगर तुम मुझे कर रहे हैं, निश्चित रूप से, कि कई नहीं, और इसलिए है कि कैसे iOS जानता है कि कितने कोशिकाओं को प्रदर्शित करने के लिए. फिर, यह 3 वापसी की तरह कुछ कह सकते हैं. मेरा तालिका दृश्य 3 पंक्तियों है. अंत में, IOS पता है कि क्या प्रत्येक कोशिका की तरह लग रहा है की जरूरत है, तो क्या यह वास्तव में करने जा रहा है इस विधि यहाँ नीचे फोन, इस tableView: cellForRowAtIndexPath. यह अपनी मेज के अंदर हर एक सेल पर इस विधि कॉल करने के लिए जा रहा है. यह कैसे पता नहीं कितनी बार यह कॉल करने के लिए? ठीक है, तुम यह अनुभाग में पंक्तियों की संख्या के अंदर बताया. हम हमारी कोशिकाओं में से प्रत्येक पर कॉल करने के लिए जा रहे हैं, और इस के अंदर है, जहां आप वास्तव में तरह बातें कर सकते पाठ सेट कर सकते हैं या तुम बताओ सही पक्ष पर कि छोटे नीले बटन क्या करता है. इन कोशिकाओं को प्राप्त करने के लिए पैटर्न, हम करने के लिए इस विधि का उपयोग करने के लिए जा रहे हैं dequeueReusableCellWithIdentifier कहा जाता है. उद्देश्य सी वास्तव में उनके विधि नाम के हास्यास्पद लंबाई के लिए बहुत अच्छी तरह से जाना जाता है, और यह वास्तव में बिंदु उदाहरण में एक अच्छा मामला है. इस विधि क्या करता है यह सिर्फ कहते हैं, मैं आप मुझे एक सेल देने के लिए करना चाहते हैं. बस एक iOS बात. यदि आप अपने आइपॉड पर 100,000 गाने की तरह कुछ है IOS के लिए नहीं करना चाहती क्या है 100.000 कोशिकाओं आवंटित, क्योंकि अगर आप अपनी सूची के शीर्ष पर रहे हैं, तो आप वास्तव में स्मृति आवंटित करने की जरूरत है सेल कि 99,000 नीचे पंक्तियों के लिए? नहीं, क्योंकि आप के रूप में आप स्क्रॉल कर रहे आवंटित के रूप में आप के साथ जाने की तरह कर सकते हैं. यह आप के लिए किया जाता है. आप कि सभी बेवकूफ प्रदर्शन सामान के बारे में चिंता करने की ज़रूरत नहीं है. तुम कहते हो तुम इस विधि dequeueReusableCellWithIdentifier कहते है, और यह कहते हैं, ठीक है, अगर आप के लिए मैं आप के लिए एक नया सेल बनाने जा रहा हूँ की जरूरत है. लेकिन अगर आप तालिका के निचले भाग में कर रहे हैं और आप पहले से ही कुछ कोशिकाओं आवंटित है तालिका के शीर्ष पर है कि तुम सच में जा रहे हैं जल्द ही किसी भी समय की जरूरत नहीं है मैं तुम्हें एक नया एक आवंटन के बजाय वापस उन में से एक देने जा रहा हूँ, और इसलिए यह एक अच्छा प्रदर्शन चिंता का विषय है. आप के लिए कोशिकाओं को अपने आप को आवंटित नहीं है. कि तुम्हें देने के लिए एक सेल वापस जा रहा है. यह आप के लिए एक सेल वस्तु वापस जा रहा है. एक बार जब आप सेल वस्तु आप सामान यह कर सकते है. आप इस पाठ लेबल बुलाया संपत्ति के साथ सेल के पाठ को सेट कर सकते हैं. आप सही है या कुछ अन्य यादृच्छिक सामान पर कि तीर जोड़ सकते हैं यह अन्य संपत्ति के साथ accessoryType कहा जाता है, और इतने पर और इतने पर. चलो वास्तव में एक तालिका दृश्य अब लागू करने पर एक नज़र रखना. जब मैं इस परियोजना को बनाया कह ही दृश्य आवेदन के बजाय मैं वास्तव में यहाँ आया था मास्टर विस्तार के आवेदन करने के लिए, और इसलिए मूल रूप से इस मेल app करने के लिए मेल खाती है बाईं तरफ तालिका दृश्य तो और सही पर सामग्री के साथ iPad पर. आइपॉड या iPhone पर इस के लिए एक एकल तालिका दृश्य के अनुरूप रहा है. यही कारण है कि जहां मैं अपने स्टार्टर कोड है. चलो पहले स्टोरीबोर्ड पर एक नज़र रखना. इस सब के सब मेरे लिए किया गया था, मूल रूप से बनाया है. इस नेविगेशन बार मुझे पता चला है क्या एक उदाहरण सेल की तरह लग सकता है, और मैं डबल क्लिक करें, शीर्षक को बदलने के लिए कर सकते हैं. किसी भी अन्य UI चिंताओं मैं वहाँ संभाल सकते हैं. हैडर फ़ाइल वास्तव में आसान लग रहा है. कह रही है इस UIViewController के बजाय अब हम कह रहे हैं कि यह एक है TableViewController, तो हम जानते हैं कि हम उन सभी तालिका तरीकों कॉल करना चाहते हैं. अगले मैं एक संपत्ति है कि का प्रतिनिधित्व करने के लिए जा रहा है बनाना चाहते हैं मेरी मेज के अंदर बातें. इस तालिका में मनमाने ढंग से प्रदर्शित करने के लिए जा रहा है फल की एक सूची है, और इसलिए मैं कुछ सरणी बनाने की जरूरत जिस में मैं फल सम्मिलित कर सकते हैं. अंदर के अपने कार्यान्वयन फ़ाइल पहली बात मैं करना चाहता हूँ मैं यकीन है कि मैं इस सरणी इनिशियलाइज़ बनाना चाहते. मैं alloc init ने कहा, मेरे फल सरणी बनाया, और मैं यह करने के लिए 4 चीजें जोड़ रहा हूँ, जिनमें से एक बहुत अधिक अन्य 3 से विवादास्पद है. और अब मैं 4 आकार की एक सरणी है. हम इसे मिलाते रहे हैं CS50 में. मैं अब 4 आकार की एक सरणी है. अब मैं इन सवालों का जवाब देने शुरू करने के लिए जा रहा हूँ, और वास्तव में, जब मैं इस app बनाया इस सब के पहले से ही मेरे लिए किया गया था. मैं बाहर तालिका दृश्य में वर्गों की संख्या में टाइप करने के लिए नहीं था. यह पहले से ही वहाँ था, और मैं रिक्त स्थान भरने रहा हूँ. मैं कितने वर्गों है? एक. सब किया. मैं कितनी पंक्तियाँ है? खैर, मैं हर फल के लिए एक पंक्ति है, तो यह गिनती किसी भी सरणी है कि का कहना है कि यह कितना बड़ा है एक संपत्ति है? यही कारण है कि मैं कितनी पंक्तियाँ है. अंत में, मैं कहना है कि प्रत्येक कोशिका की तरह दिखता है की जरूरत है? मैं dequeueReusableCellWithIdentifier कहने जा रहा हूँ. फिर, यह पहले से ही मेरे लिए लिखा गया था. मैं यह खुद कर नहीं है, था, और मैं करने के लिए वापस जाना चाहता हूँ इस स्थान पर इस सेल. याद रखें कि हम हर एक सेल पर यह एक ही विधि बुला रहे हैं, और यह यहाँ तर्क indexPath तर्क, कहते हैं पंक्ति क्या मैं अंदर हूँ अगर मैं indexPath.row यहाँ का कहना है इस 0 हो जाएगा, तो यह 1 हो जाएगा, तो यह 2 हो सकता है, और है यह तो मैं जानता हूँ कि सेल क्या मैं वर्तमान में प्रदर्शित कर रहा हूँ. मैं सेल के पाठ इस पाठलेबल संपत्ति का उपयोग कर सेट करना चाहते हैं मेरे फल सरणी के भीतर जाने के लिए और प्रत्येक पंक्ति के लिए इसी वस्तु. यदि यह एक स्ट्रिंग है, अब मैं स्थापित कर रहा हूँ पाठ संपत्ति एक स्ट्रिंग के लिए. मैं एक अन्य बात कर सकते हैं. मैं भी कोशिकाओं में से प्रत्येक पर एक घटना हेन्डलर रजिस्टर कर सकते हैं, इसलिए जब मैं इन कोशिकाओं के प्रत्येक नल इस didSelectRowAtIndexPath, यह मेरे लिए कहा जा रहा है, तो बस यह परिभाषित द्वारा अब मैं संभाल क्या होता है जब आप एक सेल नल, और फिर, हम गुजर रहे हैं जो में सेल का उपयोग किया गया था इतना है कि हम हमारी कोशिकाओं के सभी के लिए यह एक ही घटना हेन्डलर का पुन: उपयोग कर सकते हैं. फिर, यह कुछ iOS मेरे लिए क्या कर रही है है. चलो एक और कष्टप्रद पॉपअप प्रदर्शित बस का कहना है कि आप कहाँ है कि कुछ कुछ उठाया पंक्ति वस्तु होने जा रहा है. जब मैं इस चलाने के लिए, मैं यह अच्छा तालिका दृश्य करने के लिए जा रहा हूँ इन फलों में से प्रत्येक के लिए एक पंक्ति के साथ, और अगर मैं एक नल वह मुझसे कहता है कि क्या हुआ. मतलब होता है? चलो एक छोटा सा एक app के परिसर का निर्माण, के रूप में क्लिक करके आप टमाटर उठाया के रूप में ज्यादा है. storyboarding के बारे में अच्छा हिस्सा यह केवल हमारे डिजाइन स्क्रीन व्यक्तिगत रूप से मदद करने के लिए नहीं जा रहा है, यह भी मदद करने के लिए हमें एक साथ हमारे पूरे app टाई रहा है, इसलिए अंतिम app हम निर्माण हो जाएगा यह अच्छा खेल समाचार रीडर है, और कई स्क्रीन है तो यह जा रहा है, और इसलिए मैं वास्तव में प्रतिनिधित्व कर सकते हैं स्टोरीबोर्ड पर इन एकाधिक स्क्रीन के प्रत्येक, और मैं बाहर ज़ूम और एक उच्च स्तर से मेरे app देख सकते हैं. आदेश में मेरे स्टोरीबोर्ड का एक नया तत्व के अंदर बनाने के लिए इंटरफ़ेस बिल्डर के अंदर यह वास्तव में सरल है. यदि मैं यह करने के लिए एक स्क्रीन जोड़ना चाहते हैं, उदाहरण के लिए, मैं पहली बार चुटकी ज़ूम है कि एप्पल इतना प्यार करता है के साथ बाहर ज़ूम कर सकते हैं, और यहाँ नीचे से पहले मैं एक बटन के लिए खोज और मैं खींचें और एक बटन ड्रॉप अगर मैं एक नए स्क्रीन बनाना चाहते हैं मैं वास्तव में सिर्फ खींचें और कर सकते हैं ड्रॉप एक पूरे दृश्य नियंत्रक, यदि ऐसा है तो मैं इस लेने के लिए, यह यहाँ खींच खत्म हो, हे, वहाँ एक स्क्रीन है, और इसलिए अब इस एक ही स्टोरीबोर्ड फ़ाइल का उपयोग मैं अपने अनुप्रयोग के अंदर स्क्रीन के सभी कर सकते हैं, और मैं बाहर ज़ूम कर सकते हैं देखते हैं और कैसे वे बातचीत. ये अभी तक नहीं बातचीत करेंगे. रास्ते में इन 2 स्क्रीन के संपर्क है आप संबंधों को परिभाषित. आप मूल रूप से इस स्क्रीन कहते हैं, कर सकते हैं, जब आप इस बटन को दबाएं, मैं तुम पर इस नए स्क्रीन को स्लाइड के लिए चाहते हैं. इसका मतलब है कि वहाँ के बीच रिश्ते की इस तरह है  1 स्क्रीन और 2 स्क्रीन. आप मूल रूप से उस बटन से दूसरी स्क्रीन एक तीर होगा कह रही है कि जब आप इस बटन को दबाएं है कि जहां मैं जाना चाहता हूँ. वैसे ही जैसे हम क्लिक किया और नियंत्रण करने के लिए उन के आउटलेट को परिभाषित करने के लिए घसीटा हम एक ही बात करने के लिए इन segues को परिभाषित करने के लिए जा रहे हैं. हम उस के लिए एक उदाहरण देखते हैं, और हम वास्तव में संक्रमण से पहले एक स्क्रीन से दूसरे iOS काफी अच्छा करने के लिए इस विधि कॉल prepareForSegue कहा जाता है, और यह है, जहां हम शुरू कर सकते हैं एक app से दूसरे करने के लिए डेटा भेजने. उदाहरण में हम कर रहे हैं के बारे में इसे देखो मूल रूप से हमें की अनुमति देगा लीग और प्रभागों द्वारा बेसबॉल टीमों फिल्टर. जब मैं एक लीग का चयन करते हैं, उदाहरण के लिए, मैं परिवर्तन लाना चाहते हैं मेरी अगली स्क्रीन जहाँ मैं सब डिवीजनों की प्रदर्शित कर सकते हैं कि लीग या सभी अलग अलग टीमों में. मैं टीमों क्या आप प्रदर्शित करना चाहिए कि स्क्रीन के लिए भेजने की जरूरत है. ऐसा करने के लिए है कि मैं इस विधि का लाभ लेने के लिए जा रहा हूँ यहाँ. अंत में, बस IOS पर एक यादृच्छिक बिंदु. यदि आप डेटा संग्रहीत करना चाहते हैं वहाँ इस कोर डेटा बुलाया बात है, जो वास्तव में के साथ काम करने के लिए जटिल की तरह है. तुम भी SQL का उपयोग करने के लिए डाटा स्टोर कर सकते हैं, जो फिर से, अच्छा है, लेकिन और अधिक जटिल तरफ की तरह है के साथ काम करने के लिए, लेकिन iOS भी इन सच में अच्छा संपत्ति सूचियों बुलाया बातों का समर्थन करता है, और एक संपत्ति की सूची सिर्फ एक फ़ाइल है कि महत्वपूर्ण मूल्य जोड़े का प्रतिनिधित्व करता है. चाबी की एक सूची को परिभाषित करने के लिए, और आप कहते हैं कि इस कुंजी एक सरणी होने जा रहा है. यह कुंजी एक स्ट्रिंग हो जा रहा है, और मूल रूप से कुछ भी आप कर सकते हैं JSON में आप एक संपत्ति की सूची के अंदर कर सकते हैं, और इसलिए यह वास्तव में अच्छी तरह से हमें कुछ डेटा के साथ काम करने के लिए अनुमति देता है. उदाहरण के लिए, मैं इस Teams.plist कि मैं बनाया है. मैं एक नया plist फ़ाइल बनाया है, और मैं नीचे ड्रिल कर सकते हैं. यह एक शब्दकोश है, यह एक शब्दकोश है, इन तार कर रहे हैं, और इसलिए यह एक JSON दस्तावेज़ का एक अच्छा ग्राफिकल प्रतिनिधित्व है या सिर्फ महत्वपूर्ण मूल्य जोड़े का एक सेट, और इसलिए इस डेटा है कि मैं अपने अनुप्रयोग के अंदर के साथ काम करना होगा. चलो पहले यहाँ आ. अब हम एक बहुत अधिक फ़ाइलें है. लेकिन हम पहले से अधिक स्टोरीबोर्ड यहाँ आने के लिए. स्टोरीबोर्ड यहाँ अगर मैं ज़ूम कर सकते हैं बाहर अब हम देखते हैं कि यह अपने अनुप्रयोग के प्रवाह कर सकते हैं. मैं पहली बार इस स्क्रीन पर शुरू करने के लिए जा रहा हूँ. मैं इस स्क्रीन के लिए नीचे ड्रिल करने के लिए जा रहा हूँ, और मैं इस स्क्रीन के लिए नीचे ड्रिल करने के लिए जा रहा हूँ, और हम यहाँ देख सकते हैं कि अगर मैं एक तरह से के आसपास हम इन तीरों पर यहाँ से यहाँ के लिए जा रहा है इनमें से एक ले जाने के लिए, और जिस तरह से मुझे लगता है कि तीर को परिभाषित किया गया था अगर मैं एक छोटा सा में ज़ूम, और अगर मैं इस दृश्य नियंत्रक पर आते हैं, और यहाँ एक सेल है, और मैं कहना चाहता हूँ कि जब आप एक सेल नल मैं तुम पर एक स्क्रीन को स्लाइड के लिए चाहते हैं. मैं बस नीचे नियंत्रण पकड़ कर सकते हैं, एक छोटा सा पर स्क्रॉल करें, नीचे नियंत्रण पकड़, इस सेल खींचें और चलते हैं. और हम यहाँ पर कहना है कि संक्रमण है कि आप उपयोग करना चाहते हैं क्या है? क्या आप कि स्लाइड बात यह है कि धक्का कहा जाता है का उपयोग करना चाहते हैं? क्या आप के लिए नीचे से ऊपर स्लाइड के लिए करना चाहते हैं? वह मॉडल कहा जाता है. और एक बार मैं इन में से एक क्लिक करें, यह मेरे लिए इस तीर को आकर्षित करने के लिए जा रहा है, और इसका मतलब है कि मैं वास्तव में संभाला है क्या होता है जब मैं इस बटन रेखांकन प्रेस. मैं किसी के लिए वास्तव में एक स्क्रीन से एक को अगले स्लाइड कोड नहीं लिखा था. मैं इस नेत्रहीन इंटरफ़ेस बिल्डर के अंदर परिभाषित किया. अगर मैं इस तीर पर क्लिक करें, हम देख सकते हैं कि मैं इस बात को एक नाम दिया. मैंने यह कहा जाता showDivisions, और यह है इतना है कि मैं पता कर सकते हैं क्या संक्रमण होने के बारे में है, और हम सिर्फ एक सेकंड में क्यों देखेंगे. यही कारण है कि कैसे मैं अपने अनुप्रयोग में विभिन्न स्क्रीन वायर्ड है. , यदि यह एक, उदाहरण के लिए बटन, बजाय एक तालिका दृश्य थे मैं बटन पर क्लिक करें को नियंत्रित करने के लिए, अगले स्क्रीन पर खींच सकता है, और है कि कैसे मैं नेविगेशन तरीका है कि कर सकते हैं. वास्तव में, जल्दी से, अगर हम MasterViewController में आते हैं, फिर, हम बस चीजों की एक सूची को परिभाषित करने के लिए जा रहे हैं कि तालिका दृश्य में प्रदर्शित किया जाएगा. यहाँ मैं कह रहा हूँ मैं आपको लगता है कि plist फ़ाइल लेने के लिए चाहते हैं, और मैं इसे लोड करने के लिए एक शब्दकोश में चाहते हैं, और एक बार आपको लगता है कि शब्दकोश है, मैं उन एक ही सवाल फिर से जवाब करने के लिए जा रहा हूँ. यहाँ वर्गों की संख्या है. एक, हर लीग के लिए एक पंक्ति, और प्रत्येक कोशिका का मूल पाठ इस प्रकार है या तो पहले एक, 1 लीग, 2 लीग, और इतने पर होना चाहिए. अंत में, मैं यह तरीका है कि हम सिर्फ prepareForSegue बुलाया देखा का उपयोग करने के लिए जा रहा हूँ, और यह तरीका है कि निकाल दिया जा रहा है जब मैं क्लिक करें उन पंक्तियों में से एक पर है और इसलिए है कि संक्रमण को सक्रिय कि मैं तीर के साथ सेट. यह कह रहा है कि मैं कई हो सकता है एक स्क्रीन से दूसरे रिश्तों. अगर मैं 2 बटन है और एक बटन आप एक अलग स्क्रीन के लिए ले जाता है मैं प्रत्येक बटन के लिए 2 segues, 1 करने के लिए जा रहा हूँ. लेकिन इस prepareForSegue है, फिर से, के लिए reused किया जा रहा विभिन्न रिश्तों में से प्रत्येक के लिए है, तो इसका मतलब है कि मैं एक तरह की जरूरत है पहचान अगर आप 1 बटन दबा सकते हैं, या आप 2 बटन दबाएँ. याद है जब मुझे लगता है कि segue एक नाम है, इस showDivisions दिया, है कि कैसे मैं अब जानते हैं कि इस segue कि सक्रिय किया गया है. सभी मैं करना चाहता है मैं कहना चाहता हूँ मुझे यह पता लगाने के लिए क्या मैं सिर्फ हिट करना चाहते हैं, और ऐसा करने के लिए है कि मिल, मैं कह सकता हूँ मैं चयनित पंक्ति के लिए indexPath चाहते हैं, indexPath याद बस का कहना है कि जहां मैं बस क्लिक किया, और फिर मैं करने के लिए कहते हैं कि मुझे यह पता लगाने के लिए जहाँ मैं जा रहा हूँ चाहते चाहते हैं. इस destinationViewController, कि segue की एक संपत्ति है. कि स्क्रीन मैं जा रहा हूँ, इसलिए मुझे पता है कि मैं जा रहा हूँ स्क्रीन DivisionsViewController कहा जाता है क्योंकि मुझे लगता है कि वर्ग बनाया है, और इसलिए अब अगर मैं d.divisions का कहना है अब मैं मैं करने के लिए जाने के बारे में हूँ दृश्य नियंत्रक के एक संपत्ति की स्थापना कर रहा हूँ. यह कैसे मैं एक स्क्रीन से डेटा एक स्क्रीन के लिए भेज रहा हूँ. बस इस DivisionsViewController में तलाश आप यहाँ देख सकते है कि ज. फ़ाइल में वहाँ है कि संपत्ति डिवीजनों है, और है कि मैं क्या मूल रूप से populating रहा हूँ, इतना है कि कैसे मैं जानता हूँ कि मैं करने के लिए इसी डिवीजनों प्रदर्शित कर रहा हूँ लीग कि मैं क्लिक किया, और फिर, वास्तविक तालिका दृश्य बहुत ही ज्यादा लग रहा है, सिर्फ उन का जवाब दे 3 सरल रूप में के रूप में अच्छी तरह से सवालों की पहचान क्या होता है जब आप अगले स्क्रीन में जाने. बस अन्य यहाँ चीजों की एक जोड़ी. आप शीर्ष पर यहाँ नोटिस कि बजाय कह # शामिल अब मैं कह रहा हूँ आयात. यह सिर्फ एक उद्देश्य सी बात है. आयात मूल रूप से शामिल की एक अच्छे संस्करण है, उदाहरण के लिए, हम जानते हैं क्या है इस वर्ग की जरूरत है, इसलिए मैं सिर्फ DivisionsViewController नहीं कह सकता. यदि हम हमारे ग फ़ाइल के standardio.c अंदर नहीं hashtag किया संकलक पता नहीं क्या printf था था. इसी तरह, अगर मैं DivisionsViewController आयात नहीं करते संकलक वास्तव में कोई विचार नहीं है एक DivisionsViewController क्या है. बस यह सुनिश्चित करें कि अपने अलग मीटर फ़ाइलों के अंदर आप आयात करने के लिए सुनिश्चित कर लें इसी ज फ़ाइलें इतना है कि संकलक जानता है कि क्या हो रहा है. अंत में, क्या एप्पल अंततः कुछ एक वेब दृश्य का उपयोग कर डेटा प्रदर्शित करता है, और इसलिए एक वेब दृश्य एक वस्तु है जिसमें आप एम्बेड कर सकते है अपने अनुप्रयोग के अंदर एक छोटे से वेब ब्राउज़र. तुम सब करने की जरूरत है अपने वेब ब्राउज़र URL की आपूर्ति है, इसलिए मैं mlb.mlb.com करने के लिए जाना चाहते हैं, और यह है कि मैं प्रत्येक टीम के लिए घर पृष्ठ का उपयोग कर सकते हैं, और इसलिए इस URL में पारित वेब दृश्य मेरे लिए यह प्रदर्शित करने के लिए, कर सकते हैं और मैं चारों ओर ब्राउज़ कर सकते हैं, और सिम्युलेटर एक है कि प्रयोग में है. अब यह मेरे plist से आया है. यदि मैं इस पर क्लिक करें यह भी मेरे plist से आया है, और इस स्लाइडिंग संभाला था उन segues को परिभाषित. मैं इस पर क्लिक करें और एक अधिक, और अब यहाँ मेरे UIWebView कि तरह है, तो बस यहाँ यूआरएल के लिए वेबसाइट है कि मैं सिर्फ एम्बेडेड है, और मैं पागल कुछ भी संभाल नहीं था. यह कैसे एक वेब पेज प्रदर्शित करने के लिए है. इस वापस बटन की तरह यहाँ हालात भी मुझे करने के लिए दिया जाता है पूरी तरह से मुक्त करने के लिए क्योंकि मैं इन segues का उपयोग संबंधों को परिभाषित किया गया है. कोई सवाल? हाँ. [छात्र] तो जब आप alloc का उपयोग करें, कुछ भी मुफ्त के लिए आप कभी नहीं है? वास्तव में, जब आप alloc और init कॉल आप इसे मुक्त नहीं है. IOS कि आप के लिए संभाल करने के लिए जा रहा है. यह अद्भुत है, और आप किसी भी नियम नहीं तोड़ रहे हैं. हाँ. [छात्र] यदि आप अधिक टीमों कि स्क्रीन पर फिट कर सकते हैं शामिल थे, यह स्वचालित रूप से एक पुस्तक विकल्प होता है, या आप जोड़ने की जरूरत है कि कुछ है? वास्तव में, अगर मैं अधिक टीमों था, उदाहरण के लिए, यह स्वतः ही संभालना होगा मेरे लिए स्क्रॉल, और सभी प्रदर्शन चिंताओं बड़ी मेज के साथ भी मेरे लिए पूरी तरह से संभाला है. अन्य प्रश्न? इस कोड के सभी के लिए तैनात किया जा रहा है. हम किस तरह का और अधिक छोटे विवरण का एक छोटा सा पर भुला, लेकिन जैसे चीजें वेब देखने के लिए कुछ संपत्तियों की स्थापना सिर्फ बातें कर रहे हैं कि आप एप्पल प्रलेखन ब्राउज़ द्वारा प्राप्त कर सकते हैं, जो सच है, वास्तव में अच्छी तरह से बाहर रखी. वे नमूना क्षुधा की एक बहुत कुछ और usages उदाहरण है अलग APIs के, तो निश्चित रूप से अगर आप यह कर सकते हैं उन सोचना. बस कुछ उपयोगी लिंक आप पर एक नज़र रखना चाहते हो सकता है. कुछ काम प्रलेखन मार्गदर्शक हैं. URLs बड़े पैमाने पर कर रहे हैं, ताकि वे छोटा कर रहे हैं. यह पहली बार एक दस्तावेज की पूरी लाइब्रेरी है. वहाँ थोड़ा खोज बार है, इसलिए यदि आप टाइपिंग प्रारंभ बटन यह आप सभी चीजें आप एक बटन के साथ कर सकते हैं के बारे में सभी जानकारी देने के लिए शुरू कर देंगे. मैं भी टेबल प्रोग्रामिंग गाइड शामिल है. यह बहुत अधिक विस्तार में तालिका दृश्य संभालती है, कैसे काम करने की तरह गतिशील कोशिकाओं या संपादित कोशिकाओं जोड़ सकते हैं या उन्हें हटा दें. वहाँ एप्पल से नमूना क्षुधा की बहुत सारे है कि आप बताएंगे कि कैसे करना होगा, और अंत में, यह पिछले एक मानव इंटरफ़ेस दिशानिर्देश है, और यह मूल रूप से UI घटक की कुछ चर्चा है, तरह बातें एक बटन है कि 4 पिक्सल द्वारा 4 पिक्सल नहीं बनाते हैं. यह एक बुरा विचार है, और अन्य चीजें हैं जो एप्पल तुम्हें करने के लिए करना चाहता है अच्छे डिजाइन को प्रोत्साहित करने के लिए. इससे पहले कि हम खत्म करने के लिए कोई अंतिम सवाल? सब ठीक है, निश्चित रूप से चर्चा पर विशेष लेबल किया जा रहा है हम करने के लिए स्वतंत्र महसूस हो रहा है. हम एक एक iOS होगा, तो निश्चित है कि का उपयोग करने के लिए स्वतंत्र महसूस हो रहा है. यदि आप के लिए परियोजनाओं पर अपने सहपाठियों के साथ काम करना चाहते हैं मदद या बाहर कुछ यादृच्छिक iOS सामान आंकड़ा मुझे ईमेल करने के लिए स्वतंत्र महसूस, और निश्चित रूप से सभी कोड ऑनलाइन क्योंकि सोचना बस समय के हित में हम किस तरह से अधिक से अधिक भुला चीजों के महीन grained विवरण. लेकिन यदि नहीं, तो अपने iOS परियोजनाओं पर अच्छी किस्मत, और मैं आशा है कि हम App स्टोर में क्षुधा की बड़ी बाढ़ है. [CS50.TV]