Tianyu LIU: Hei, bagaimana itu ia pergi semua orang? Dan ini adalah App IOS pengaturcaraan c objektif seminar. Dan nama-Ku Tianyu Liu. Saya junior Lowell sekarang, menumpukan perhatian dalam bidang sains komputer. Jadi, dalam seminar ini saya akan mengajar anda semua sedikit tentang bagaimana untuk membuat aplikasi. Yay, teruja untuk itu. Jadi sebelum kita mula menyelam ke sebelah pengaturcaraan sebenar, mari kita benar-benar cepat bercakap tentang mengapa anda mungkin mahu membina sebuah aplikasi iOS? Mengapa iOS begitu menggerunkan? Jadi masalah yang pertama, yang pertama perkara yang cukup menggerunkan bagi kita, terutamanya sebagai CS50 yang pelajar, adalah bahawa iOS menggunakan Objektif C. Nah, ada bahasa baru dipanggil Swift, tetapi kita tidak akan menggunakan bahawa dalam seminar ini. Jika anda berminat untuk Swift, terdapat adalah satu seminar bebas tentang itu. Tetapi Objektif C pada dasarnya yang superset C. Maksud bahawa semua yang anda gunakan dalam C boleh diterjemahkan ke dalam Objektif C sangat mudah. Seperti yang anda lihat nanti, bahawa sesungguhnya terdapat beberapa sintaks paling asas, adalah pada dasarnya perkara yang sama, C dan Objektif C. Jadi, kerana anda telah mengambil CS50 sehingga sejauh ini, anda sudah tahu Objektif C, sekurang-kurangnya 40%. Juga, Apple mempunyai benar-benar API yang mantap untuk iOS. Terdapat banyak benar-benar gila perkara yang boleh anda lakukan dengan ia. Satu di antaranya adalah seseorang sebenarnya mencipta sebuah aplikasi iOS untuk mengawal kereta, yang cukup menarik. Mungkin helikopter adalah lebih menarik. Tetapi itulah bagaimana kuat API iOS boleh. Dan seperti yang anda mungkin mempunyai digambarkan sekarang, limpahan tindanan mungkin salah satu sumber yang paling penting dalam talian disediakan untuk anda. Dan berita baik, bagi tiap-tiap masalah tunggal anda boleh mungkin memikirkan sambil membina anda projek akhir Objektif C, ada kemungkinan besar jawapan timbunan limpahan. Ia hanya menggerunkan. Selain itu, iOS adalah benar-benar platform di mana anda boleh mencapai besar penonton dengan sedikit usaha. Ia tidak seperti Android, di mana semua ini cukup berpecah-belah. Semua iOS adalah bersatu. Dan selagi anda membuat sebuah aplikasi untuk iPhone, anda boleh dengan mudah pelabuhan itu untuk iPad, iPad mini, atau saiz iPhone berbeza. Semua ini adalah benar-benar mudah. Dan ia hanya benar-benar baik untuk menarik hati rakan-rakan anda. Anda hanya boleh memegang iPhone dan memberitahu rakan anda hey, ini adalah app saya membuat. Anda boleh berbuat demikian untuk apa-apa aplikasi desktop, yang bagus. Baiklah, sekarang mari kita benar-benar mendapatkan ke dalam bahasa Objektif C. Jadi mengapa tidak kita mulakan dengan beberapa sintaks benar-benar asas. Seperti yang saya nyatakan sebelum Objektif C Ia pada dasarnya superset C. Jadi banyak sintaks asas adalah sebenarnya betul-betul sama. Mengisytiharkan pembolehubah dan menambah dua pembolehubah bersama adalah betul-betul seperti yang telah kami lakukan di Mario. Tiada yang baru di sini. Begitu juga dengan penginap untuk gelung dan juga keadaan yang sama. Anda boleh melakukan untuk gelung seperti anda telah lakukan didalam Mario [didengar]. Dan anda boleh melakukan syarat sama seperti apa yang anda telah melakukan dalam p sebelumnya set anda. Walau bagaimanapun, Objektif C tidak benar-benar C, dan ada sesuatu yang adalah jenis pelik mengenainya. Yang pertama adalah bahawa apabila anda berada melakukan pengaturcaraan C, anda biasanya memanggil termasuk dan kemudian nama perpustakaan. Tetapi dalam Objektif C anda memanggil import itu. Pada dasarnya berkata fungsi, nama sahaja yang berbeza. Dan tali-tali adalah sebenarnya sedikit pelik. Anda boleh melihat bahawa yang pertama perkara yang jenis pelik adalah bahawa anda mempunyai cukup weird-- sorry-- anda mempunyai NS cukup pelik mendaftar di sini. Dan perkara yang kedua itulah jenis pelik adalah anda mempunyai sekurang-tanda sebelum sebenarnya mengisytiharkan tali. Jadi pada dasarnya menunjukkan tanda bahawa rentetan bukan sahaja rentetan, ia sebenarnya objek. Kami akan menjelaskan yang kemudiannya jadi tidak panik jika anda tidak lakukan memahami apa yang bermakna. Dan percetakan untuk konsol adalah sedikit berbeza kerana di C kita panggil printf, tetapi dalam Objektif C kita memanggil [didengar]. Anda mungkin tertanya-tanya apa itu. Yang pada dasarnya printf, hanya bahasa yang berbeza. Tepat penggunaan yang sama, tepat fungsi yang sama. Baik ia ternyata bahawa Objektif C sebenarnya mempunyai ns awalan dalam hampir segala-galanya, setiap jenis data asas, nsstring, nsarray, nsdictionary. Sebabnya adalah ns sebenarnya berdiri untuk langkah seterusnya, yang merupakan suatu syarikat yang Steve Jobs telah ditubuhkan, yang merupakan suatu syarikat di mana bahasa Objektif C dilahirkan. Jadi ini adalah pada dasarnya tradisi. Saya tahu ia adalah sedikit pelik, tetapi ia Apple. Jadi sesuatu yang walaupun weirder dari itu adalah suatu akuan fungsi. Ini adalah sangat berbeza daripada apa yang kita lihat dalam C, kerana di sini ia sebenarnya tidak kelihatan seperti C lagi. Apa yang anda perlu here-- oleh cara ini tidak adalah titik peluru, ini adalah tanda tolak. Anda mempunyai kurungan tanda tolak tidak sah dan kemudian nama fungsi. Mari kita katakan jika kita mempunyai hello dunia, maka Jenis pulangan itu akan menjadi tidak sah kerana kita kembali apa-apa. Apa yang akan benar-benar pelik ialah apabila anda yang mempunyai lebih daripada satu parameter lulus ke fungsi yang sama akan menjadi benar-benar pelik seperti yang ditunjukkan di sini. Kami mempunyai nama kaedah, addInt dipanggil untuk [didengar] dan kami lulus satu parameter. Tetapi selepas itu, kita mempunyai lebih nama panggilan dengan kaedah. Dan selepas dengan kami lulus parameter kedua. Ini sebenarnya sedikit pelik, tetapi semua ini pengisytiharan fungsi mengikuti corak yang sama seperti ini. Kami mempunyai tanda tolak untuk memulakan. Tanda tolak boleh menjadi tanda tambah kadang-kadang berdasarkan jenis kaedah apa adalah ia. Kaedah pada dasarnya nama lain bagi fungsi. Dan kita akan menjelaskan bahwa kemudian, ketika kita berbicara tentang objek pengaturcaraan berorientasikan. Anda pertama menentukan pulangan menaip di dalam kurungan, selepas itu datang nama kaedah. Anda lulus satu parameter. Dan jika anda mempunyai lebih banyak parameter anda perlu untuk melanjutkan nama kaedah dan pada dasarnya menulis sesuatu yang lebih di sini. Ia boleh menjadi apa sahaja yang anda mahu. Dalam kes kita itu dengan. Tetapi anda boleh mengatakan akhir, atau atau, atau abc bar penuh, apa sahaja yang anda mahu. Dan kemudian selepas itu anda lulus parameter b. Ini adalah benar-benar pelik konvensyen tetapi kami akan melihat mengapa Apple mahu untuk melakukannya dengan cepat. Jadi bagaimana anda memanggil fungsi? Memanggil satu majlis di Objektif C juga berbeza dari C. Sebenarnya, memanggil fungsi dalam C Objektif adalah lebih seperti anda bercakap dengan seseorang. Di sini kita mempunyai diri, yang dipanggil objek. Anda pada dasarnya memberitahu membantah diri untuk mengatakan "Hello World!" Itulah bagaimana untuk memanggil fungsi. Satu objek dan nama kaedah digabungkan dengan satu sama lain. Dan ini adalah di mana sambungan yang pelik untuk nama kaedah benar-benar datang ke dalam bermain. Mari kita lihat contoh kedua. Kami hanya ditakrifkan kaedah yang dipanggil addInt dengan blah blah blah. Jadi dalam kes ini apabila anda panggil bahawa [tertentu? mesej?] ia akan kelihatan seperti addInt diri: 10 dengan: 2. Ia kedengaran seperti bahasa Inggeris. Walaupun majlis itu pengisytiharan fungsi adalah pelik, titik Objektif C corak akuan kaedah, ialah apabila anda panggil fungsi atau kaedah ia akan berbunyi seperti sebenar bahasa Inggeris. Sehingga sangat intuitif sebaik sahaja anda masuk ke dalam. Terutamanya dalam kes ini, di mana anda boleh pada dasarnya melihat bahawa nama fungsi adalah semacam mendokumenkan sendiri. Anda tidak perlu apa-apa penjelasan lebih untuk melihat apa sebenarnya yang berlaku, apa yang betul-betul satu parameter lakukan. Melangkah lebih dari itu, mari kita bercakap sedikit sedikit tentang pengaturcaraan berorientasikan objek. Pengaturcaraan berorientasikan objek adalah salah satu pengaturcaraan asas teknik atau corak yang digunakan oleh C. Objektif Objektif C dipanggil Objektif C, tidak C, atas sebab yang benar-benar baik. Jadi sebelum kita masuk ke dalam C sintaks Objektif, Mari kita benar-benar cepat melihat apa sebenarnya objek. Kita mungkin telah melakukan sesuatu seperti objek sebelum, yang dipanggil struct apabila anda melaksanakan pokok atau senarai yang berkaitan atau [? cuba. ?] Jadi, itu dasarnya seperti struct yang, tetapi ia lebih kuat daripada itu. Satu objek mempunyai kaedah dan ciri-ciri. Kaedah pada dasarnya fungsi. Pada asasnya berfungsi bahawa khusus kepada objek tertentu. Dan sifat-sifat yang pada dasarnya bidang yang anda tentukan dalam struct itu. Jadi bagi setiap objek tunggal kami mempunyai beberapa harta yang mempunyai beberapa pembolehubah yang khusus kepada objek. Dan kita mempunyai beberapa fungsi yang juga khusus kepada objek. Dan fungsi yang dipanggil kaedah dan pembolehubah dipanggil hartanah. Ia hanya nama mewah. Walaupun fakta anda, setiap pandangan tunggal anda lihat apabila anda membuka aplikasi iOS, mari kita hanya mengatakan Twitter atau Facebook, setiap pandangan tunggal yang anda lihat adalah objek. Dan walaupun keseluruhan app adalah objek untuk memulakan dengan. Konsep yang sangat menarik. Dan mengapa kita mahu objek pengaturcaraan berorientasikan? Jadi anda boleh bayangkan bahawa apabila anda program itu mendapat cukup rumit. Mari kita katakan apabila anda melaksanakan papan catur, logik yang akan yang benar-benar rumit. Anda mempunyai 36 berbeza keping, supaya jika anda mahu menulis logik untuk semua 36 keping yang berbeza dalam permainan catur, yang akan menjadi banyak fungsi dan pembolehubah yang berbeza. Ia banyak masalah. Dan mungkin anda akan menulis kaedah yang berlainan atau fungsi yang berbeza untuk setiap keping untuk betul-betul mengawal apa yang mereka lakukan. Tetapi jika anda lakukan objek berorientasikan pengaturcaraan, semua serpihan ini boleh disarikan ke satu objek tunggal. Dan objek akan mempunyai beberapa biasa hartanah, seperti jenis apa yang sekeping adalah ia? Apakah warna ia? Bagaimana ia boleh bergerak? Dan dengan itu kamu telah banyak dipermudahkan logik itu. Jadi ia hanya benar-benar cara yang baik untuk membuat program yang rumit, dan hubungan hierarki dalam program ini, sangat mudah. Seperti yang kita akan melihat kenapa dengan cepat apabila kita sebenarnya lakukan programming-- apabila kita benar-benar melakukan suatu kod S sesi pengaturcaraan kemudian. Baik di samping itu, pengaturcaraan berorientasikan objek hanya banyak keseronokan. Anda mendapat untuk mereka bentuk objek anda sendiri. Anda mendapat untuk mereka bentuk apakah ia kelihatan seperti sendiri. Tidak ada jawapan yang tepat untuk itu. Dan ia benar-benar menarik. Jadi dalam pengaturcaraan berorientasikan objek, dua konsep asas akan menjadi kelas dan contoh. Kelas A pada dasarnya templat untuk objek. Dan contoh yang pada dasarnya satu objek tertentu. Mari kita katakan anda membuat cookie. Dalam kes ini, setiap satu cookie anda sebenarnya berakhir dengan akan menjadi objek. Tetapi plat cookie yang anda gunakan untuk membakar semua cookies akan menjadi sebuah kelas. Kelas A pada dasarnya templat. Dan contoh yang akan menjadi salah satu tertentu objek yang diwujudkan daripada kelas itu. Dan contoh yang akan diwujudkan berdasarkan pengisytiharan kelas, seperti yang kita lihat dalam slaid kemudian. Jadi mari kita benar-benar melakukan yang benar-benar contoh cepat [didengar]. Katakan kita mengisytiharkan objek untuk kucing. Objek itu perlu have-- kelas kucing harus mempunyai beberapa ciri-ciri dan kaedah. Apakah jenis hartanah yang sepatutnya kelas have-- harus kucing mempunyai? Sebagai contoh, warna, umur dan baka, mereka akan menjadi pembolehubah yang khusus untuk setiap kucing. Dan orang-orang adalah beberapa perkara yang kita gunakan untuk menggambarkan kucing. Apakah jenis kaedah, atau apa yang boleh kucing lakukan? Beberapa contoh cepat akan mengejar tetikus, makan ikan atau hanya Meow. Ini adalah benar-benar cepat contoh kelas kucing. Dan yang benar-benar khusus objek kucing akan menjadi kucing di mana kita menentukan warna, umur dan baka. Dalam kes itu, objek kami adalah tidak lagi kelas lagi. Kami menyalin template dari kelas dan kita menentukan setiap maklumat khusus dengan objek tertentu untuk menjadikannya bebas. Dan apabila anda panggil kaedah dalam objek, anda hanya memanggil Meow pada objek, yang kucing anda buat. Mungkin anda akan mencetak sesuatu seperti "Hello World! Meow. " Cukup comel. Baiklah, mari kita masuk ke dalam beberapa butiran dalam maklumat dan melihat apa sebenarnya adakah itu diterjemahkan menjadi pengaturcaraan iOS. Jadi dalam iOS pengaturcaraan setiap tunggal kelas akan dilaksanakan dalam dua fail. Satu fail di sini, yang dipanggil antara muka. Fail lain di sini, yang dipanggil pelaksanaan. Biasanya antara muka akan mempunyai extension.h seperti yang kita lihat di perpustakaan C. Dan fail pelaksanaan adalah akan mempunyai extension.n. Agak pelik. Tetapi .N bermakna sebenarnya .c, tidak ada perbezaan asas di antara orang-orang dua. Jadi dalam kes ini, kita dapat melihat bahawa kami mengisytiharkan muka, Cat: objek. Yang terkenal sebagai warisan. Kami pada dasarnya mewarisi yang kelas kucing dari kelas objek. Jadi tiap-tiap harta dan kaedah yang sebelum ini ditakrifkan dalam kelas objek akan secara automatik ditakrifkan dalam kelas kucing juga. Selain itu, kami menentukan warna, baka, dan umur, tiga pembolehubah. Yang benar-benar kelihatan seperti sesuatu yang anda lakukan. Ia kelihatan seperti struct. Yang pada dasarnya sintaks untuk pengisytiharan struct, dan yang benar-benar betul. Dan sejak saya nyatakan sebelum ini, perbezaan struct yang dan objek, salah satu daripada perbezaan asas adalah bahawa objek mempunyai kaedah, manakala struct yang hanya mempunyai pembolehubah. Jadi sebagai tambahan kepada sifat-sifat atau pembolehubah kami buat bagi objek, kita menentukan kaedah tertentu. Mari kita katakan di sini kita mempunyai dua kaedah, satu adalah Meow, satu sama lain adalah tetikus mengejar. Kami mungkin mahu lulus parameter berdasarkan kaedah kami sebelum ini corak perisytiharan. Anda mungkin mahu lulus tetikus. Dan anda mungkin akan mahu untuk kembali yang menandakan bool jika kucing anda mempunyai berjaya ditangkap tetikus atau tidak. Ini adalah antara muka, tetapi kita boleh melihat bahawa antara muka yang sebenarnya tidak berbuat apa-apa. Ia hanya memberitahu program apa exists-- apa yang wujud di dalam kelas kucing. Jadi dalam usaha untuk program untuk melakukan sesuatu, kita perlu mempunyai fail pelaksanaan. Jadi di sini, perkara pertama yang kami lakukan adalah jelas kita mengimport antara muka. Selepas kita mengimport antara muka, kita menentukan kaedah. Mari kita katakan di sini Meow hanya akan mencetak "Hello World!" untuk konsol. Dan selepas pelaksanaan fail, kami cukup banyak dilakukan. Ini adalah pada dasarnya kelas pengisytiharan untuk satu kelas. Jadi sekarang soalan menjadi, bagaimana anda mengisytiharkan pembolehubah? Cara anda menggunakan kelas untuk mewujudkan objek dalam Objektif C ditulis di sini. Anda pertama menentukan bahawa ini adalah penunjuk kucing, kerana setiap objek dalam Objektif C akhirnya dilaksanakan sebagai penunjuk. Dan anda memanggil kelas, memanggil mereka sebagai alloc, yang pada dasarnya malloc, memberitahu sistem operasi yang anda memerlukan ruang memori untuk objek ini. Selepas itu anda mempunyai objek sudah dan anda hanya memulakan ia. Ini hanyalah konvensyen. Saya tahu ia adalah sedikit pelik, tetapi ini sebenarnya adalah bagaimana Apple melakukan barangan. Menetapkan harta-harta yang sebenarnya cukup mudah. Ia hampir sama dengan apa yang anda lakukan apabila anda memberikan beberapa tertentu bidang di dalam struct. Anda hanya perlu pembolehubah nama, nama hartanah, dan memberikan nilai tertentu kepadanya. Dan memanggil kaedah yang hampir sama. Yang memanggil kaedah adalah pada dasarnya apa yang saya bercakap tentang untuk memanggil mana-mana kaedah di Objektif C. Anda lulus objek, dalam kes ini ia akan menjadi MYCAT, dan anda lulus nama kaedah. Seolah-olah anda sedang bercakap dengan objek, MYCAT, yang anda perlu Meow. Ia agak menarik. Selepas itu, ada satu corak reka bentuk yang lebih penting bahawa kita perlu bercakap mengenai sebelum mendapatkan kod S sebenar. Bahawa corak reka bentuk yang dipanggil acara didorong pengaturcaraan. Ini juga mungkin salah satu yang paling idea-idea asas dalam pengaturcaraan iOS. Jadi, anda mungkin tidak tahu apa sebenarnya pengaturcaraan adalah acara yang didorong oleh, tetapi ia tidak benar-benar yang menakutkan. Well sebenarnya, anda mempunyai telah dilakukan bahawa sebelum. Ini adalah salah satu daripada laluan anda telah mungkin lagi menulis di terakhir [didengar] daripada CS50, google.maps.event.addListener (tanda, "Klik", fungsi () {}) :. Dengan menelefon talian ini anda adalah pada dasarnya memberitahu komputer bahawa setiap kali acara yang dipanggil "Klik" yang berlaku pada penanda, menggunakan fungsi itu. Ini adalah sangat berbeza daripada apa yang anda lakukan di mario.c. Dalam mario.c anda hanya menjalankan program sekali, ia memberikan anda output, dan anda selesai. Ini adalah jenis seperti satu program pukulan. Program acara didorong adalah sangat, sangat berbeza. Bayangkan, jika Facebook adalah salah satu program pukulan itu tidak benar-benar baik. Anda hanya pergi ke Facebook sekali dan ia dilakukan. Ia memberikan anda beberapa output dan anda tidak pernah kembali. Anda tidak pernah mendapat apa-apa lagi. Jadi di sini, terutamanya corak yang kita gunakan adalah acara didorong, supaya setiap fungsi akan ditangkap berdasarkan apa kejadian telah berlaku. Sebagai contoh, jika kita mempunyai butang dan kami nyatakan bahawa setiap kali butang yang di klik, memanggil fungsi yang dipanggil "Hello World!" Dengan cara itu kita boleh benar-benar menguruskan logik fungsi mengalir dengan cara yang sangat fleksibel. Pengguna boleh melakukan atau hubungi fungsi yang telah dipanggil. Ia benar-benar berdasarkan apa yang pengguna lakukan. Oleh itu, kita dapat melihat bahawa ini adalah sebenarnya jauh lebih baik daripada mario.c. Dan berita baik adalah bahawa itu sebenarnya tidak satu konsep baru. Anda semua telah dilakukan bahawa dalam masalah yang terakhir ditetapkan. Jadi dalam Objektif C terdapat tiga gambar rajah yang berbeza untuk acara didorong pengaturcaraan. Gambar rajah pertama adalah dipanggil tindakan sasaran, di mana anda mengikat butang akhbar dengan beberapa fungsi. Mari kita katakan, apabila anda klik butang beberapa, anda memanggil beberapa fungsi. Ini adalah tindakan sasaran sangat mudah. Yang kedua adalah sebenarnya satu yang paling sukar, ia dipanggil delegasi pada protokol. Kami akan menjelaskan yang secara terperinci kemudian. Dan cara yang ketiga adalah pemberitahuan. Ini sebenarnya tidak sangat penting sejauh kerana kami bimbang, kerana peluang bahawa anda akan menggunakan pemberitahuan dalam projek akhir anda adalah agak rendah. Jadi, kita akan melangkau bahagian itu. Dan kami akan menyelam ke dalam delegasi pada protokol. Jadi apa sebenarnya adalah protokol? Atau apa sebenarnya delegasi? Mari kita bercakap tentang protokol untuk memulakan dengan. Protokol tidak lain hanyalah peristiwa. Tetapi peristiwa ini diberikan kepada anda oleh Apple untuk memulakan dengan. Sebagai contoh, saya tidak benar-benar pasti berapa ramai daripada anda lelaki menggunakan asal Apple mel aplikasi atau kenalan, tetapi setiap kali anda tatal yang meja dan tekan sel tertentu di atas meja, iaitu peristiwa. Dan jika anda mahu untuk melakukan peristiwa yang sendiri, ia sebenarnya sedikit keras. Jadi Apple telah diberikan bahawa walaupun untuk anda supaya anda boleh hanya terus menggunakan Sekiranya melakukan sesuatu pada anda sendiri. Protokol sebenarnya benar-benar, benar-benar digunakan secara meluas dalam Objektif C. Baik dalam Malah, setiap aplikasi tunggal mempunyai sesuatu yang terperangkap app perwakilan. Bahagian dalam halus adalah semua protokol untuk memuatkan app. Mari kita katakan ada acara untuk aplikasi lakukan beban. Jadi apa yang patut berlaku selepas anda telah mencipta aplikasi, selepas anda membuka aplikasi, selepas anda menutup aplikasi, atau selepas anda meletakkan iPhone tidur. Ini semua adalah peristiwa-peristiwa yang mempunyai telah diberikan kepada anda. Dan asalnya di dalam zarah ini tidak akan ada pelaksanaan. Apple hanya memberitahu anda bahawa fungsi ini akan berlaku apabila sesuatu peristiwa yang berlaku, tetapi apa yang anda lakukan dengan fungsi adalah sepenuhnya terpulang kepada anda. Delegasi pada dasarnya memberitahu kelas bahawa anda perlu mengendalikan protokol ini. Ia sedikit mengelirukan, tetapi ia akan menjadi lebih jelas apabila kita lakukan kod dalam tindakan. Delegasi pada protokol sebenarnya adalah mekanisme amat teguh dalam erti kata bahawa jika kita buat rombongan untuk kelas tertentu, kita pada dasarnya boleh mengendalikan semua jenis acara menggunakan mana-mana golongan yang kita ada, alat yang sangat mudah. Jadi satu contoh cepat untuk delegasi pada protokol akan apa yang saya bercakap tentang. Protokol ini khusus dipanggil tableview [didengar] pilih peranan di [? indeks?] [? masa lalu. ?] Jadi yang ini acara yang akan ditangkap apabila anda sebenarnya memanfaatkan tertentu sel dalam tableview anda, mari kita hanya mengatakan dalam mel anda atau dalam apl kenalan anda. Di dalam fungsi yang terdapat asalnya melakukan apa-apa. Majlis tersebut tidak berbuat apa-apa secara lalai. Tetapi anda boleh menentukan apa fungsi yang tidak, diberikan apa yang anda mahu daripada aplikasi anda. Alat yang sangat mudah. Dan dengan segala yang yang berkata, saya pada dasarnya meliputi beberapa sintaks paling asas dan konsep asas untuk Objektif C pengaturcaraan, dan kita boleh melakukan beberapa kod s. Lebih menarik. Jadi s kod sebenarnya adalah sedikit hangat apabila anda membukanya untuk kali pertama. Satu nota cepat, jadi jika anda mahu melakukan pembangunan iOS, Saya sangat mengesyorkan anda mempunyai Mac. Kerana melakukan pembangunan iOS pada Windows adalah benar-benar, benar-benar keras. Ia boleh dilakukan, tetapi ia benar-benar keras. Dan anda pasti lakukan tidak mahu menggunakan g mengedit. Jadi, dalam s kod kita mempunyai beberapa kawasan yang berbeza. Apabila anda pertama kali membuka s kod anda akan melihat kawasan navigasi, yang pada dasarnya menunjukkan anda semua fail yang ada di projek semasa anda. Anda mempunyai kawasan bar alat, yang pada dasarnya menguruskan pandangan, atau beberapa sedikit cepat alat tentang s kod sendiri. Dan ini adalah kawasan editor sebenar. Kawasan ini adalah sangat serupa g edit, tetapi jauh lebih baik daripada g mengedit. Dan dalam bidang ini betul, adalah dipanggil kawasan utiliti. Kawasan ini menjadi benar-benar berguna ketika anda mencipta antara muka atau menyatakan beberapa setup cepat untuk aplikasi anda. Dan kawasan yang akhir adalah yang debugging. Kawasan ini mengandungi konsol. Jadi, setiap kali anda mengatakan printf, atau nslog dalam kes ini, semua keputusan anda akan dicetak di sini. Baiklah? Saya rasa kita boleh benar-benar cepat melakukan contoh untuk pengaturcaraan iOS. Dan mari kita sebenarnya membuka kod sehingga s. Jadi setiap kali anda membuka kod sehingga s, itu akan muncul sesuatu seperti itu. Ia akan meminta anda apa yang anda mahu lakukan? Adakah anda ingin memulakan sesuatu rawak, taman permainan, pada dasarnya anda hanya boleh menguji kod tanpa sebenarnya melakukan apa-apa untuk aplikasi. Adakah anda ingin membuat projek baru? Atau adakah anda ingin terus bekerja pada projek yang sedia ada? Dalam kes kami kita akan untuk mewujudkan satu projek baru. Jadi ia adalah benar-benar baik, s kod sebenarnya sudah mempunyai diberikan anda beberapa template untuk mencipta objek. Jika anda mahu melakukan permainan, s kod sebenarnya mempunyai template permainan untuk anda, mempunyai aplikasi berasaskan halaman, aplikasi berasaskan tab. Dalam kes ini, kita akan untuk melakukan sesuatu yang sangat mudah, dan kita akan menggunakan permohonan paparan tunggal. Selepas itu apa yang anda mahu untuk memanggil produk anda, dan apa yang nama, apa yang pengecam anda, dan bahasa mana yang anda gunakan. Di sini kita tidak mahu semak menggunakan Teras Data. Teras Data pada dasarnya ialah databasing iOS. Jika anda melakukan Teras Data, s kod akan menentukan banyak kelas lebih rumit untuk anda. Jadi untuk menyimpan segala-galanya mudah, kami hanya akan melakukan tanpa Teras Data sekarang. Masalah kita akan menjadi menggunakan adalah bahawa- masalah kami akan mewujudkan ialah kami pada dasarnya ingin mengimport Mario dari C untuk aplikasi iOS. Jadi mari kita memanggil bahawa Mario-iOS. Sudah tentu anda tentukan apa yang anda ingin dimasukkan ke dalam projek anda. Dan di sana kami pergi. Jadi ini adalah sedikit melanda, tetapi ini sebenarnya apa yang kita hanya melihat pada slaid. Dan kawasan yang pertama yang kita lihat sekarang pada dasarnya konfigurasi projek. Jadi semua yang anda mahu lakukan projek, jenis peranti, mari kita hanya mengatakan apa jenis peranti adakah anda ingin aplikasi anda untuk muncul di? Adakah iPhone, iPad atau universal? Jadi orientasi peranti, semua barangan ini. Tidak sangat penting, tetapi boleh menjadi, tetapi ini adalah tempat di mana anda menyediakan projek anda jika anda benar-benar mahu dihantar ke kedai Apple. Baiklah, mari kita lihat sesuatu yang ada di dalam kod kami. Mari kita pergi melalui navigasi fail. Dan ini adalah semua fail yang telah datang dengan template, sangat bagus. Oleh itu, apabila kita klik salah seorang daripada mereka ini adalah apa yang ia kelihatan seperti. Hampir sama dengan g mengedit. Tetapi anda boleh lihat bahawa penonjolan sintaks mungkin sedikit lebih bagus. Dan ia sebenarnya lebih berkuasa daripada g penyuntingan. Dan anda boleh auto lengkap banyak perkara untuk anda, seperti yang kita lihat dengan cepat. Mari kita membuka kawasan debugging juga. Baiklah, seperti yang kita lihat, konsol yang tepat di sini. Ini adalah apa yang anda akan melihat di mana anda berada dalam printf atau nsloging sesuatu. Jadi tanpa berlengah-lengah lagi, mari kita sebenarnya menyusun aplikasi dan melihat apa yang berlaku. Satu ciri penting untuk s kod, adalah bahawa kod s datang dengan simulator iPhone. Jadi anda tidak perlu mempunyai iPhone untuk mencuba projek anda, s kod boleh mensimulasikan bahawa untuk anda, seperti yang kita lihat sekarang. Ia cukup bagus. Ia mengambil sedikit sedikit masa untuk menyusun dan pada dasarnya kita mempunyai permohonan kosong, yang sebenarnya tidak apa-apa. Tetapi ia menyusun. Hebat juga. Ini jauh lebih baik daripada C, huh? Baiklah, maka mari kita cuba untuk menambah sesuatu. Satu fail yang sedikit pelik di sini dipanggil papan cerita. Ini sebenarnya yang hebat, ciri hebat untuk s kod. Kerana di s kod, anda boleh seret sebenarnya dan drop elemen ke antara muka dan ia secara langsung akan muncul. Mari kita cuba itu. Kami drop label di sini, "Hello World !!!" Kami boleh memusatkan itu. Cukup sejuk. Sekarang mari kita menjalankan simulasi henti ini. Di sini kita mempunyai "Hello World !!!" Kita juga tidak boleh mana-mana coding lagi. Apa yang palang pintu yang sedang berlaku? Ini adalah bagaimana kuat Interface Builder boleh. Seseorang bahkan berkata mungkin anda boleh hanya melengkapkan sebuah aplikasi tanpa bertulis mungkin seribu baris kod hanya dengan menggunakan Antara Muka Builder. Tetapi ia mungkin tidak cara terbaik untuk melakukannya. Sekarang mari kita sebenarnya turun ke pengekodan. Jadi struktur untuk fail sebenarnya benar-benar menarik kerana, seperti yang anda boleh lihat, terdapat ada fungsi utama mana-mana sahaja. Lihat? Seperti yang telah dinyatakan sebelum ini, anda boleh melihat bahawa ini adalah fail pelaksanaan untuk kelas tertentu. Tetapi tidak ada mana-mana sahaja utama. Jadi di mana utama? Sebenarnya, terdapat satu utama, tetapi utama sebenarnya tersembunyi dari anda. Yang utama adalah di sini. Yang kelihatan biasa. Jadi, pada asasnya apa iOS lakukan dalam utama adalah bahawa setiap kali utama adalah dipanggil, yang pada dasarnya apabila aplikasi itu dilaksanakan, ia mencipta objek yang dipanggil AppDelegate. Seperti yang saya nyatakan sebelum ini, keseluruhan app sebenarnya objek dengan sendirinya. Jadi dengan cara ini, pada dasarnya aplikasi iOS memberitahu pengkompil OK itu, saya akan membuat produk yang dipanggil AppDelegate, dan yang akan menjadi aplikasi saya. Jadi, anda perlu pergi melalui AppDelegate yang dan melihat apa yang lelaki itu lakukan. Tugas saya adalah lakukan untuk saya. Dan dalam AppDelegate anda dapat melihat bahawa terdapat beberapa fungsi benar-benar pelik, dan sebenarnya kaedah, yang Apple telah diberikan anda. Apakah ini? Ini adalah benar-benar hanya protokol yang saya bercakap tentang. Jadi ini adalah peristiwa-peristiwa yang Apple telah diberikan anda untuk memulakan dengan. Tidak ada dalam beberapa fungsi sekarang, tetapi jika kita mahu memulakan sesuatu untuk aplikasi kami sebelum masuk ke memaparkan sebarang pandangan, kita berbuat demikian di sini. Anda hanya boleh membaca nama dan saya rasa acara ini adalah benar-benar benar-benar jelas. Jadi sekarang utama telah mewujudkan objek untuk AppDelegate. Dan apa AppDelegate akan melakukan sebenarnya juga tersembunyi daripada anda. The AppDelegate akan mula memuatkan saham ViewController itu. Jadi pada dasarnya akan memulakan memuatkan sehingga semua pandangan yang anda mempunyai dan hanya menyebabkan pandangan berdasarkan hierarki. Jadi dalam kes ini kita hanya mempunyai satu paparan, yang ada di sini. Jadi yang merupakan satu-satunya pandangan perkara yang berlaku untuk dipanggil. Logik ViewController yang tepat di sini. Ini adalah kod yang sebenarnya mengawal pandangan kita hanya melihat. Baiklah, mari kita melakukan sesuatu di sini. Jadi viewDidLoad bunyi seperti sesuatu acara, sedangkan ini juga perwakilan, ini juga protokol. Jadi apa sahaja pandangan yang dimuatkan, segala-galanya di dalam majlis itu akan dipanggil. Dalam kes ini kita perlu melihat "Hello Tianyu! "Sekiranya kita menjalankan program ini. Ini semakin sedikit perlahan menyusun fail papan cerita. Baik sesungguhnya kami melihat output untuk itu. Ia agak sejuk. Sekarang mari kita benar-benar melakukan Mario. Saya akan menentukan berfungsi dengan cepat. marioWithLevels: keputusan (int) tahap. Baiklah, ini adalah sebenarnya yang ditakuti, ciri s kod siap auto. Oleh itu, apabila anda menulis untuk menaip dan memasukkan, ia telah diberikan sehingga template untuk anda, yang cukup sejuk. Yang benar-benar perlu mencari biasa kepada anda semua. Maaf, itu salah saya. Baiklah, sejuk. Logik yang harus melihat benar-benar biasa kepada anda semua, terutama hanya Mario. Tetapi kini kita akan mencetak untuk konsol setiap kali, kerana kami mahu mengekalkan entah bagaimana menjejaki apa yang kita mencetak. Kami akan menggunakan mengakibatkan entah bagaimana kemudian, untuk memaparkan cetak keluar menyebabkan kepada pengguna. Jadi, kami hanya nslogging segala-galanya, yang kami menyimpan segala-galanya ke dalam akibat panggilan fungsi, tetapi logik adalah betul-betul sama. Selepas kita menyelesaikannya, kita hanya mencetak keputusan kami. Dan di sini dan bukannya mencetak saya nama, kita akan memanggil fungsi. Mari kita lihat apa yang berlaku. Oops, jelas. Kami mempunyai yang bagus piramid kecil di sini. Ini adalah pada dasarnya C, kami hanya memanipulasi mana anda memanggil fungsi dan bagaimana fungsi yang kelihatan seperti. Ada apa-apa yang berbeza. Tetapi ini adalah benar-benar tidak sangat menarik di sini, kerana kita tidak melihat apa-apa dari aplikasi iPhone. Jadi, jika anda benar-benar mempunyai iPhone app-- jika anda benar-benar mempunyai Mario iOS hak sekarang, anda tidak akan untuk melihat apa-apa yang mempunyai apa-apa kaitan dengan Mario kerana semua orang output ke dalam konsol tersembunyi daripada pengguna. Ini adalah apa yang anda lihat, iaitu "Hello World !!!" Tidak baik. Sekarang mari kita cuba untuk membuat pengguna melihat apa sebenarnya kami mencetak. Oleh itu, kita tidak perlu melabelkan lagi. Mari kita cuba memikirkan sesuatu lain yang mungkin berguna. Terdapat sebenarnya adalah salah satu unsur yang dipanggil medan teks, yang boleh sangat membantu untuk kita. Ia pada dasarnya memaparkan kawasan yang teks yang boleh disunting. Jadi yang kelihatan benar-benar membantu. Sekarang mari kita tarik dan lepaskan. Wow, kita mempunyai pandangan teks pada pandangan kami, benar-benar mewah. Itulah sedikit terlalu besar. Mari kita menjadikannya lebih kecil. Letakkanlah di dalam pusat. Membuatnya lebih kecil juga. Sekarang kita mempunyai pandangan teks, yang kita boleh digunakan untuk mendapat keputusan akhir kami. Tetapi sekarang ia pasti tidak akan berjaya kerana ada yang no-- ViewController kita hanya ditakrifkan tidak tahu bahawa terdapat pandangan teks di luar sana. Oleh itu, kita perlu entah bagaimana pandangan pautan teks yang kita hanya dicipta dengan kelas yang telah datang dengan kami. Cara kami melakukan yang sebenarnya benar-benar ajaib. Jadi membuka papan cerita. Terdapat khas [didengar] dipanggil [? pembantu?] [didengar]. Apabila anda klik itu, ia akan membuka dua fail. Satu adalah kelas dan satu lagi adalah pandangan yang sepadan untuk itu. Ia sangat, sangat membantu. Dan mari kita hanya pergi melalui fail .h itu. Kawalan, ini adalah [didengar] logik. Kawalan tekan dan seret pandangan teks ke dalam perisytiharan itu. Kami akan memanggil outputView itu. Sambung. Jadi di sini kita telah mengisytiharkan baru harta untuk kelas ViewController kami. Dan harta yang baru sahaja pandangan teks yang kami telah mencipta dalam bangunan antara muka. Jadi dengan cara itu kita dapat Akses semua data yang dan memanipulasi semua yang berada di dalam pandangan keluaran yang mengagumkan. Jadi dalam kod sebenar kami, mari kita melakukan sesuatu dengan ia. Jadi kali ini apabila kita seperti percetakan daripada keputusan akhir untuk Mario, kami tidak di log apa-apa. Maksud saya kita boleh menyimpan penyata pembalakan. Selain itu, kami menghantar bacaan yang kita hanya diwujudkan bagi pandangan keluaran yang adalah UI textview kita buat. Sekarang mari kita lihat apa yang berlaku. Wow. Kami mempunyai piramid dalam apl ini sekarang. Jadi pengguna boleh melihat keluaran kami kerana kami salin output dari kod kami ke muka kami. Ia cukup baik. Ini sebenarnya tidak bahawa menarik kerana kita can-- Semua aplikasi yang sedang dilakukan adalah menunjukkan piramid untuk anda, dan tiada apa-apa yang anda boleh lakukan mengenainya. Ia bukan terutamanya menarik. Jadi sekarang mari kita membuat butang yang akan menghilangkan pandangan. Nampaknya butang yang akan membantu. Seret dan lepaskan. Satu butang. Button dua. Oleh itu, apabila kita klik kiri butang, pandangan yang harus diselesaikan. Perlu ada apa-apa pada skrin. Dan apabila kita klik butang kanan, Mario, pandangan akan muncul semula. Jadi cara ini kita juga melakukan perkara yang perkara ajaib, kawalan dan seret dengan laporan kelas dalam pembantu director-- yang dalam pembantu penonton. Dalam kes ini kita menyatakan bahawa yang sepatutnya menjadi tindakan. clearMario. Jadi di sini kita telah membuat suatu tindakan dipanggil clearMario, yang merupakan kaedah yang akan dipanggil setiap kali kita tekan butang jelas. Jadi sebenarnya dalam kod kita, mari kita meletakkan teks output dan pandangan output ke dalam apa-apa, dan dengan cara ini ia akan kelihatan jelas. Selain itu, mari kita membuat kaedah lain yang dipanggil runMario. Oh maaf, yang tidak patut menjadi harta orang yang. Baiklah, yang sepatutnya menjadi suatu tindakan juga. Dan apabila fungsi yang dipanggil, kami hanya menjalankan Mario sepuluh. Mudah-mudahan yang akan denda. Adakah ia menyusun? Ya. Sekarang kita mempunyai pandangan yang. Kami mempunyai output. Dan mari kita lihat apa yang berlaku. Itu hilang. Ia kembali lagi. Jadi di sini kita telah dinyatakan jenis fungsi akan dipanggil apabila kita menaip sesuatu, apabila kita tekan butang tertentu. Ini pada dasarnya adalah skim tindakan sasaran untuk acara didorong pengaturcaraan dalam Objektif C. Selain itu, ia tidak sangat menarik kerana kita tidak boleh benar-benar mengubah bagaimana tinggi piramid akan menjadi, jadi kami mungkin ingin entah bagaimana mendapatkan input daripada pengguna dan menukar ketinggian piramid berasaskan apa yang output. Jadi, kita akan berbuat demikian. Jadi kali ini apabila kita panggil runMario, kita tidak hanya memanggil Mario secara langsung. Gelaran ini seseorang. Perwakilan. Ini adalah sangat menarik. Apakah perwakilan? Saya akan meletakkan diri di sini. Dan kita akan lihat apa yang bermakna kemudian. Jadi di sini kita telah pada dasarnya mencipta contoh khusus dipanggil amaran UI pandangan. Pandangan UI amaran adalah pada dasarnya apa yang anda kehendaki lihat setiap kali sesuatu pop dan meminta anda untuk input, seperti apa yang akan berlaku apabila anda cuba untuk membeli sesuatu di kedai app. Selain itu, selepas anda menciptakannya, kita hanya menunjukkan amaran itu. Baiklah, mari kita cepat ujian akan kerja itu atau tidak. Itu sangat sejuk. Sekarang mari kita sebenarnya mewujudkan medan input bagi isyarat UI. Inilah cara yang kita lakukan itu. Dan kita perlu ada pandangan input untuk berjaga-jaga. Sangat sejuk. Mari kita katakan 10. Ia tidak melakukan apa-apa hak sekarang kerana panggilan yang sebenarnya tidak berubah untuk melaksanakan mario. Jadi ini telah menjadi sedikit sedikit pelik kerana setiap kali kita tekan butang ke bawah, setiap kali kita tekan butang memandangkan berjaga-jaga, sesuatu yang sepatutnya berlaku, tetapi ia tidak akan berlaku. Bagaimana kita yang menangkap? Bagaimana kita tahu bahawa pengguna telah menolak pandangan amaran dan sudah memasuki nombor, kerana sekarang apa yang sebenarnya berlaku. Nah, anda mungkin telah meneka dengan betul, delegasi. Jadi sebagai tambahan kepada semua pengisytiharan ini, kita perlu menambah satu delegasi baru untuk ia dipanggil UI pandangan amaran perwakilan. Supaya setiap tunggal interaksi atau peristiwa bahawa kita akan mempunyai dengan pandangan UI amaran akan dikendalikan oleh kelas kami juga. Jadi selain daripada itu, akan amaran butang pandangan klik di indeks. Ini dicapai. Jadi, dalam keadaan sedemikian, kami mempunyai already-- jadi kita perlu mendapati protokol yang akan mengendalikan acara itu apabila kita klik butang Selesai pada pandangan amaran. Jadi setiap kali kita menolak pandangan amaran, ini sepatutnya berlaku. Biar saya mengujinya dengan cepat. Baik sesungguhnya kami telah mencapai sini. Jadi di sini, apa yang kita tidak akan benar-benar mendapatkan sebenarnya mendapatkan the-- Jadi kita ingin keluar teks yang kita ada sebelum ini dimasukkan dalam pandangan amaran. Dan berdasarkan teks, kami akan memaparkan Mario. Ini sangat cepat ternyata jika ia benar-benar bekerja atau tidak. Jadi, dalam kes itu, jika kita input, katakan, 10, kita akan dapat melihat 10. Sangat baik, kami mempunyai beberapa di sini. Ia cukup baik. Sekarang langkah terakhir akan adalah-- Jadi Langkah terakhir yang perlu kita lakukan sekarang hanya panggilan Mario dengan tahap berdasarkan input bahawa kita telah dimasukkan ke dalam pandangan amaran. Oleh itu, kita perlu menukar rentetan ini ke dalam iOS. Limpahan statik adalah sangat menggerunkan. Dan kemudian kita hanya memanggil diri nilai marioWithLevels. Mari kita melihat akan yang benar-benar bekerja atau tidak. Kami telah diberikan piramid. Mari kita cuba untuk mengubah ketinggian. Yang sebenarnya berfungsi. Ia agak sejuk. Supaya sekarang anda boleh hanya input apa-apa nilai yang anda mahu. Mari kita katakan empat. Yang Hebat. Jadi ini adalah pada dasarnya contoh yang benar-benar cepat untuk cara membuat projek dalam s kod dan bagaimana untuk benar-benar cepat wayar sehingga beberapa peristiwa benar-benar mudah dan fungsi. Jadi sumber akan untuk diletakkan talian kemudian. Jadi jika anda berminat dalam bagaimana iOS Mario bekerja, Saya akan meletakkan tepat yang sama projek ke laman web CS50 yang kemudian. Kami pada dasarnya selesai dengan musim panas, dan sebelum kita menyelesaikan Saya hanya mahu menunjukkan kepada anda semua beberapa sumber yang benar-benar menggerunkan boleh didapati dalam talian. Jelas dokumentasi Apple akan menjadi sangat membantu. Tetapi di samping itu, saya terutamanya mengesyorkan empat sumber, kod sekolah, rumah pokok, AppCoda dan WWDC video. Kod sekolah dan rumah pokok adalah dua laman web mendidik talian, yang khusus menumpukan kejuruteraan perisian. Terutama bagi sekolah kod, mereka mempunyai tutorial benar-benar baik pada iOS. Itu adalah contoh yang benar-benar pantas untuk itu. Mereka sebenarnya membuat benar-benar cute-- melihat bahawa iPhone kecil yang lucu dude di sana, ia cukup menggerunkan. Dan cara mereka menjelaskan Objektif C sintaks adalah jelas. Rumah pokok adalah sama. Dan AppCoda adalah forum. Ini sebenarnya satu blog yang telah menjalankan oleh Objektif C benar-benar mengalami programmer. Dan semua orang-orang tutorial dalam AppCoda adalah cukup pendek dan mudah untuk melaksanakan, amat disyorkan. Dan jika anda seorang pembangun, pasti pergi check bagaimana video WWDC di mana anda boleh belajar mengenai pengaturcaraan iOS terkini teknik, API dan perpustakaan. Jadi yang cukup banyak untuk seminar tersebut. Terima kasih banyak. Dan saya berharap anda telah berseronok mewujudkan aplikasi iOS anda sendiri.