1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar] [IOS: Penulisan Apps Seperti Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Universiti Harvard] 3 00:00:04,000 --> 00:00:08,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Baiklah, semua orang, dialu-alukan untuk IOS: Penulisan Apps seperti Boss. 5 00:00:12,000 --> 00:00:16,000 Seminar ini akan memberi tumpuan kepada menulis aplikasi untuk iPhone 6 00:00:16,000 --> 00:00:19,000 dan seterusnya menulis aplikasi untuk iPad, dan sebagainya kita pada dasarnya akan berjalan melalui 7 00:00:19,000 --> 00:00:23,000 beberapa contoh yang berbeza bagaimana untuk membuat aplikasi, permainan yang mudah seperti Tic Tac Toe, 8 00:00:23,000 --> 00:00:26,000 atau jika anda lebih berminat dalam membuat aplikasi seperti beberapa jenis pembaca berita 9 00:00:26,000 --> 00:00:30,000 atau sesuatu yang berinteraksi dengan Internet saya akan bercakap tentang itu juga. 10 00:00:30,000 --> 00:00:32,000 Berikut adalah agenda ringkas kami. 11 00:00:32,000 --> 00:00:36,000 >> Aplikasi IOS ditulis dalam bahasa yang dipanggil Objektif-C, 12 00:00:36,000 --> 00:00:39,000 dan sebagainya ini adalah sedikit serupa dengan C tetapi tidak benar-benar di semua, 13 00:00:39,000 --> 00:00:41,000 jadi kita akan bercakap sedikit tentang bahasa sendiri 14 00:00:41,000 --> 00:00:45,000 dan kemudian bagaimana untuk membina aplikasi bawah menggunakan aplikasi program ini dipanggil XCode, 15 00:00:45,000 --> 00:00:48,000 yang jika anda telah tidak dimuat turun lagi berasa bebas untuk memulakan muat turun sekarang. 16 00:00:48,000 --> 00:00:50,000 Ia adalah beberapa gigabait. 17 00:00:50,000 --> 00:00:54,000 Ia harus menjadi percuma di App Store, jadi anda perlu untuk mempunyai Mac 18 00:00:54,000 --> 00:00:57,000 ideal menjalankan versi terbaru OS X. 19 00:00:57,000 --> 00:00:59,000 Jika anda tidak, tiada masalah. 20 00:00:59,000 --> 00:01:02,000 Kami mempunyai Mac di pusat sains tersedia untuk kegunaan anda 21 00:01:02,000 --> 00:01:05,000 dengan XCode dipasang, dan jadi berasa bebas untuk menggunakan mereka untuk pembangunan. 22 00:01:05,000 --> 00:01:07,000 Jika anda mahu membuat app tetapi tidak mempunyai Mac, jangan bimbang. 23 00:01:07,000 --> 00:01:09,000 Terdapat banyak sumber kampus untuk itu. 24 00:01:09,000 --> 00:01:15,000 Dan sebagainya maka kita pergi untuk menampung 2 besar contoh aplikasi yang berbeza anda boleh membuat. 25 00:01:15,000 --> 00:01:19,000 Objektif-C adalah teknikal apa yang dipanggil satu set super C. 26 00:01:19,000 --> 00:01:24,000 Ini bermakna bahawa mana-mana kod C juga sah Objektif-C kod. 27 00:01:24,000 --> 00:01:29,000 Itu bermakna bahawa kita jenis saluran yang dirakam pada beberapa ciri-ciri tambahan kepada C. 28 00:01:29,000 --> 00:01:33,000 Sebahagian daripada ciri-ciri ini termasuk tidak mempunyai pernah menulis malloc lagi, Alhamdulillah, 29 00:01:33,000 --> 00:01:36,000 tidak perlu bimbang tentang mereka petunjuk bodoh dan membebaskan mereka dan semua barangan itu 30 00:01:36,000 --> 00:01:40,000 anda membenci tentang C, dan ia jenis pergi dalam Objektif-C-. 31 00:01:40,000 --> 00:01:43,000 >> Sekarang, Objektif-C juga mempunyai standard perpustakaan yang lebih besar, 32 00:01:43,000 --> 00:01:47,000 jadi ada fungsi yang lebih banyak anda mendapat untuk bahagian percuma Objektif-C. 33 00:01:47,000 --> 00:01:50,000 Ingat apabila kita telah menulis PHP kita menyedari bahawa kita pergi dari 34 00:01:50,000 --> 00:01:54,000 bahasa yang terkecil kepada perpustakaan gergasi semua perkara-perkara gila yang boleh anda lakukan. 35 00:01:54,000 --> 00:01:56,000 Perkara yang sama berlaku dalam IOS. 36 00:01:56,000 --> 00:01:59,000 Ada objek untuk perkara-perkara seperti kalendar Buddha, dan benar-benar apa-apa 37 00:01:59,000 --> 00:02:05,000 anda mungkin boleh berfikir mungkin wujud sudah dalam pelaksanaan Objektif-C. 38 00:02:05,000 --> 00:02:08,000 Bahagian objektif Objektif-C rujukan sesuatu 39 00:02:08,000 --> 00:02:11,000 dipanggil Pengaturcaraan Berorientasikan Objek. 40 00:02:11,000 --> 00:02:14,000 Ini adalah jenis konsep baru, tetapi kita telah sebenarnya kebanyakannya belajar 41 00:02:14,000 --> 00:02:17,000 banyak konsep-konsep ini sudah. 42 00:02:17,000 --> 00:02:19,000 Idea di sebalik Pengaturcaraan Berorientasikan Objek adalah bahawa anda akan menstrukturkan 43 00:02:19,000 --> 00:02:23,000 banyak kod anda di sekitar perkara-perkara yang dipanggil kelas, 44 00:02:23,000 --> 00:02:26,000 dan kelas ini benar-benar dimuliakan structs. 45 00:02:26,000 --> 00:02:30,000 Dalam struct satu kita pada dasarnya di sini adalah perkara, 46 00:02:30,000 --> 00:02:32,000 dan perkara ini boleh mempunyai ahli-ahli. 47 00:02:32,000 --> 00:02:35,000 Sebagai contoh, nod dalam senarai dikaitkan boleh mempunyai perkara-perkara lain 48 00:02:35,000 --> 00:02:38,000 seperti nilai, penunjuk kepada nod seterusnya dalam senarai, 49 00:02:38,000 --> 00:02:44,000 dan bersama-sama bahawa penunjuk dan nilai yang terdiri ini contoh salah satu daripada struct satu. 50 00:02:44,000 --> 00:02:47,000 Kelas adalah sangat serupa kecuali 51 00:02:47,000 --> 00:02:50,000 kelas juga boleh mempunyai fungsi di dalam mereka. 52 00:02:50,000 --> 00:02:54,000 Apabila kita mengisytiharkan struct, kita hanya boleh mengatakan n int atau nod * seterusnya. 53 00:02:54,000 --> 00:02:57,000 >> Kini dengan C-Objektif kita sebenarnya boleh meletakkan fungsi 54 00:02:57,000 --> 00:02:59,000 di dalam perkara-perkara. 55 00:02:59,000 --> 00:03:03,000 Satu lagi perkara yang kelas boleh lakukan ialah mereka boleh mewarisi data dari kelas lain. 56 00:03:03,000 --> 00:03:07,000 Sebagai contoh, kita akan melihat sekumpulan terbina dalam kelas Objektif-C. 57 00:03:07,000 --> 00:03:11,000 Salah seorang daripada mereka boleh menjadi kelas yang mewakili pandangan untuk skrin, 58 00:03:11,000 --> 00:03:14,000 dan sebagainya dengan mengatakan saya mahu melaksanakan pandangan saya sendiri 59 00:03:14,000 --> 00:03:18,000 kita pada dasarnya mengatakan seseorang lebih di Apple, orang mungkin benar-benar bagus, 60 00:03:18,000 --> 00:03:21,000 menulis ini kelas bagi saya, dan ia mengendalikan perkara-perkara seperti memaparkan butang 61 00:03:21,000 --> 00:03:25,000 atau menjadikan skrin, dan kita akan benar-benar yg menderita 62 00:03:25,000 --> 00:03:28,000 untuk melaksanakan semua bahawa fungsi diri, dan sebagainya dengan hanya 63 00:03:28,000 --> 00:03:31,000 mewarisi data kita boleh mengatakan segala-galanya yang anda lakukan dalam kelas itu 64 00:03:31,000 --> 00:03:34,000 Saya juga mahu di dalam kelas saya, dan kemudian saya akan melakukan beberapa barangan lain, 65 00:03:34,000 --> 00:03:37,000 iaitu melaksanakan app. 66 00:03:37,000 --> 00:03:40,000 Itulah apa yang pewarisan perkataan bermakna. Kita akan lihat satu contoh yang lebih konkrit. 67 00:03:40,000 --> 00:03:42,000 >> Dan akhirnya, kunci dengan Pengaturcaraan Berorientasikan Objek adalah bahawa 68 00:03:42,000 --> 00:03:45,000 ia membawa kepada pengkapsulan data. 69 00:03:45,000 --> 00:03:48,000 Dalam beberapa masalah kami set kita boleh mempunyai ini besar, pembolehubah global 70 00:03:48,000 --> 00:03:51,000 dan globals di mana-mana, dan itulah bagaimana kita hendak menjejaki negeri. 71 00:03:51,000 --> 00:03:55,000 Dengan kelas kita boleh mula encapsulating maklumat di dalam sesuatu objek. 72 00:03:55,000 --> 00:03:58,000 Jika kita mempunyai satu skrin pada aplikasi kita, kita tidak benar-benar memerlukan untuk mempunyai apa-apa data dari 73 00:03:58,000 --> 00:04:01,000 satu lagi skrin di dalam aplikasi kami bahawa, 74 00:04:01,000 --> 00:04:04,000 dan sebagainya dengan encapsulating perkara dalam kelas ini sebenarnya membawa 75 00:04:04,000 --> 00:04:08,000 kod rekabentuk yang lebih baik, dan ini boleh dilakukan dengan beberapa ciri-ciri tambahan 76 00:04:08,000 --> 00:04:11,000 Objektif-C. 77 00:04:11,000 --> 00:04:15,000 Amaran, sintaks untuk Objektif-C adalah pisang. 78 00:04:15,000 --> 00:04:19,000 Ia adalah seperti apa-apa yang kita telah melihat sebelum ini, 79 00:04:19,000 --> 00:04:22,000 jadi ia adalah sedikit lengkung pembelajaran mendapat digunakan untuk 80 00:04:22,000 --> 00:04:24,000 apa yang palang pintu itu adakah ini bermakna? 81 00:04:24,000 --> 00:04:27,000 Tetapi apabila anda mendapat lalu bahawa pembelajaran keluk awal ia adalah benar-benar, benar-benar licin 82 00:04:27,000 --> 00:04:29,000 untuk mula menulis aplikasi. 83 00:04:29,000 --> 00:04:33,000 >> Untuk mengisytiharkan kelas, katakan di sini adalah kelas saya, ia wujud, 84 00:04:33,000 --> 00:04:35,000 dan mungkin di sini adalah beberapa perkara yang saya akan untuk menentukan kemudian, 85 00:04:35,000 --> 00:04:38,000 Saya akan mengatakan muka @. 86 00:04:38,000 --> 00:04:41,000 Saya akan mengatakan muka @. Saya akan memberi nama kelas saya. 87 00:04:41,000 --> 00:04:43,000 Dan kemudian di tempat lain saya akan mengatakan @ akhir, 88 00:04:43,000 --> 00:04:46,000 dan segala-galanya di antara muka _AT_ dan akhir @ 89 00:04:46,000 --> 00:04:48,000 akan menjadi kelas saya. 90 00:04:48,000 --> 00:04:51,000 Itu akan menjadi apa yang di dalam h fail kami. 91 00:04:51,000 --> 00:04:55,000 Sama seperti dalam C h fail. Kami pada dasarnya berkata di sini adalah beberapa perkara yang akan wujud. 92 00:04:55,000 --> 00:04:57,000 Saya tidak semestinya memberitahu anda apa yang mereka lakukan lagi, 93 00:04:57,000 --> 00:04:59,000 tetapi pengkompil perlu tahu bahawa mereka wujud. 94 00:04:59,000 --> 00:05:04,000 Kemudian dalam m kami. Fail kerana m untuk Objektif-C 95 00:05:04,000 --> 00:05:08,000 di mana kita sebenarnya akan menentukan apa kelas ini lakukan. 96 00:05:08,000 --> 00:05:11,000 Sama seperti c fail. Kami, kami menyediakan pelaksanaan bagi fungsi. 97 00:05:11,000 --> 00:05:15,000 Di dalam fail kami. M kita hendak katakan di sini adalah apa yang semua fungsi 98 00:05:15,000 --> 00:05:18,000 di dalam kelas saya apa yang mereka semua lakukan. 99 00:05:18,000 --> 00:05:22,000 Dan akhirnya, di dalam struct satu kita boleh mengatakan di dalam orang-orang pendakap kerinting 100 00:05:22,000 --> 00:05:25,000 int n atau nod * seterusnya, 101 00:05:25,000 --> 00:05:28,000 dan dalam C-Objektif kita akan menggunakan kata kunci @ harta, 102 00:05:28,000 --> 00:05:31,000 dan ini adalah apa yang berlaku untuk menentukan sifat-sifat, 103 00:05:31,000 --> 00:05:36,000 atau fungsi bukan yang merupakan sebahagian daripada kelas saya. 104 00:05:36,000 --> 00:05:40,000 >> Memanggil fungsi dalam Objektif-C juga pisang. 105 00:05:40,000 --> 00:05:43,000 Apabila kita mengisytiharkan fungsi dalam C kita berkata sesuatu seperti int foo 106 00:05:43,000 --> 00:05:46,000 dan terbuka paren dan kemudian memberikannya satu senarai hujah. 107 00:05:46,000 --> 00:05:51,000 Ini adalah apa yang mengisytiharkan kaedah atau fungsi kelihatan seperti dalam C-Objektif. 108 00:05:51,000 --> 00:05:54,000 Jika saya ingin mengisytiharkan fungsi atau kaedah 109 00:05:54,000 --> 00:05:58,000 di mana saya cakapkan kaedah adalah benar-benar hanya fungsi itulah ahli kelas, 110 00:05:58,000 --> 00:06:01,000 jadi jenis ditukar, tetapi tidak benar-benar, 111 00:06:01,000 --> 00:06:03,000 begitu dalam kaedah saya, saya mahu mencipta satu kaedah baru. 112 00:06:03,000 --> 00:06:06,000 Ia akan kembali apa-apa, jadi ia akan menjadi tidak sah jenis. 113 00:06:06,000 --> 00:06:08,000 Ini adalah jenis pulangan fungsi saya. 114 00:06:08,000 --> 00:06:11,000 Sekarang kita mempunyai parens di sini kerana saya tidak tahu. 115 00:06:11,000 --> 00:06:14,000 Seterusnya akan menjadi nama fungsi saya, 116 00:06:14,000 --> 00:06:17,000 dan akhirnya kita mempunyai koma bernoktah sama seperti kita mempunyai dalam C. 117 00:06:17,000 --> 00:06:19,000 Apa yang baru di sini adalah lelaki ini di sini. 118 00:06:19,000 --> 00:06:22,000 Sempang ini sebenarnya adalah perlu, dan apa yang ini mengatakan adalah bahawa 119 00:06:22,000 --> 00:06:26,000 kaedah ini di sini mesti dipanggil pada contoh kelas. 120 00:06:26,000 --> 00:06:29,000 >> Selepas kita mengisytiharkan structs kami, kita mungkin berkata sesuatu seperti 121 00:06:29,000 --> 00:06:32,000 n struct nod, dan yang sebenarnya dicipta 122 00:06:32,000 --> 00:06:35,000 atau instantiated salah mereka structs supaya saya sebenarnya boleh mula bekerja 123 00:06:35,000 --> 00:06:38,000 dengan apa yang di dalamnya, jadi melontarkan ini bermakna bahawa kita perlu 124 00:06:38,000 --> 00:06:41,000 instantiate kelas hanya seperti kita instantiated bahawa struct 125 00:06:41,000 --> 00:06:43,000 sebelum kita boleh memanggil kaedah ini di atasnya. 126 00:06:43,000 --> 00:06:46,000 Jika saya mahu mula menambah hujah untuk kaedah saya 127 00:06:46,000 --> 00:06:48,000 ia mendapat lebih pisang. 128 00:06:48,000 --> 00:06:50,000 Berikut adalah nama kaedah saya. 129 00:06:50,000 --> 00:06:53,000 Kemudian saya akan mempunyai kolon, dan selepas koma ini ia mengatakan di sini datang beberapa hujah. 130 00:06:53,000 --> 00:06:56,000 Kaedah ini mengambil satu hujah. 131 00:06:56,000 --> 00:06:59,000 Jenis hujah adalah int, dan nama hujah bahawa 132 00:06:59,000 --> 00:07:03,000 atau pembolehubah bahawa saya akan mula menggunakan dalam kaedah dipanggil i. 133 00:07:03,000 --> 00:07:05,000 Sekali lagi, ini adalah kaedah. Ia mengambil masa satu hujah. 134 00:07:05,000 --> 00:07:10,000 >> Jika anda ingin mula menambah hujah-hujah yang lebih ia mendapat lebih pisang 135 00:07:10,000 --> 00:07:13,000 bahawa kita telah kolon ini yang mengatakan di sini datang senarai saya hujah. 136 00:07:13,000 --> 00:07:15,000 Hujah pertama ialah integer. 137 00:07:15,000 --> 00:07:17,000 Sekarang, ini hujah kedua yang menarik. 138 00:07:17,000 --> 00:07:20,000 Pembolehubah bahawa saya akan menggunakan dalam fungsi saya 139 00:07:20,000 --> 00:07:23,000 dipanggil f, jadi dalam fungsi saya, saya boleh mengatakan 140 00:07:23,000 --> 00:07:25,000 f + = 1 atau sesuatu. 141 00:07:25,000 --> 00:07:30,000 Ini perkara di sini pada asasnya utama bagi hujah atau parameter. 142 00:07:30,000 --> 00:07:34,000 Sama seperti kita mempunyai pasangan nilai utama dan sesuatu seperti JSON atau array bersekutu 143 00:07:34,000 --> 00:07:37,000 Objektif-C membuat keputusan untuk mengatakan, okay, hanya supaya ia benar-benar jelas 144 00:07:37,000 --> 00:07:39,000 apabila anda memanggil satu kaedah apa semua parameter ini adalah 145 00:07:39,000 --> 00:07:41,000 Saya sebenarnya pergi untuk menamakan mereka semua. 146 00:07:41,000 --> 00:07:45,000 Apabila anda memanggil kaedah, anda sebenarnya akan mengatakan andFloat, 147 00:07:45,000 --> 00:07:47,000 dan kemudian anda akan lulus ia masuk 148 00:07:47,000 --> 00:07:50,000 >> Menariknya, yang satu ini tidak dinamakan, tetapi semua parameter lain adalah, 149 00:07:50,000 --> 00:07:53,000 jadi jika kita mempunyai hujah ke-3 saya boleh katakan andFloat 150 00:07:53,000 --> 00:07:56,000 dan satu lagi apungan dan sebagainya. 151 00:07:56,000 --> 00:08:01,000 Apabila saya panggil kaedah ini ia adalah pisang kursus, 152 00:08:01,000 --> 00:08:04,000 jadi jika saya mempunyai objek, dan saya ditakrifkan satu kaedah yang dipanggil foo, 153 00:08:04,000 --> 00:08:09,000 dan saya mahu memanggilnya, dan bukannya mengatakan foo terbuka / parens rapat 154 00:08:09,000 --> 00:08:11,000 Saya akan membuka kurungan. 155 00:08:11,000 --> 00:08:13,000 Berikut adalah nama kaedah saya. 156 00:08:13,000 --> 00:08:17,000 Saya akan menutup pendakap, dan ini adalah objek yang saya memanggilnya pada. 157 00:08:17,000 --> 00:08:20,000 Ingat, semua kaedah ini wujud dalam kelas 158 00:08:20,000 --> 00:08:23,000 kerana kelas boleh mempunyai kaedah yang ditakrifkan di dalam mereka. 159 00:08:23,000 --> 00:08:26,000 >> Di sini saya telah sewenang-wenangnya mencipta objek kelas beberapa, 160 00:08:26,000 --> 00:08:28,000 dan ini adalah sintaks untuk berbuat demikian. 161 00:08:28,000 --> 00:08:31,000 Terdapat 2 langkah untuk mewujudkan objek. 162 00:08:31,000 --> 00:08:34,000 Langkah pertama adalah untuk mengatakan saya mahu untuk memperuntukkan ruang. 163 00:08:34,000 --> 00:08:37,000 Ini adalah bersamaan malloc satu. Kami tidak mempunyai untuk mengatakan malloc lagi. 164 00:08:37,000 --> 00:08:42,000 Kami jatuh m, dibuat ia alloc, dan digantikan c.. M. 165 00:08:42,000 --> 00:08:47,000 Selepas kita alloc sesuatu kita perlu untuk memulakan ia. 166 00:08:47,000 --> 00:08:49,000 Pada asasnya apabila anda mencipta objek anda mungkin mahu mempunyai beberapa logik 167 00:08:49,000 --> 00:08:53,000 yang melaksanakan apabila mereka mencipta, jadi anda boleh lulus dalam beberapa nilai-nilai lalai 168 00:08:53,000 --> 00:08:57,000 atau sesuatu seperti itu, dan begitu juga kaedah ini INIT adalah apa yang sebenarnya mencipta objek. 169 00:08:57,000 --> 00:08:59,000 Kami mula memperuntukkan ruang, sama seperti yang kita lakukan dalam C, 170 00:08:59,000 --> 00:09:04,000 dan kemudian kita memulakan, yang mungkin atau mungkin tidak melakukan banyak keseluruhan. 171 00:09:04,000 --> 00:09:07,000 Kemudian kami kembali perkara ini menjadi sebuah o objek. 172 00:09:07,000 --> 00:09:09,000 Terdapat bintang di sini kerana ini adalah teknikal penunjuk, 173 00:09:09,000 --> 00:09:12,000 tetapi jangan bimbang, petunjuk tidak begitu besar berurusan dalam Objektif-C-lagi. 174 00:09:12,000 --> 00:09:15,000 >> Sekarang kita telah instantiated kelas ini dipanggil NSObject, 175 00:09:15,000 --> 00:09:19,000 dan ini hanya kelas rawak bahawa Apple mempunyai. 176 00:09:19,000 --> 00:09:22,000 Kami telah instantiated ini, dan kini saya mempunyai contoh kelas ini 177 00:09:22,000 --> 00:09:25,000 dalam ini o objek, jadi ini bermakna bahawa jika saya ditakrifkan 178 00:09:25,000 --> 00:09:29,000 kaedah ini saya boleh memanggil mereka seperti ini. 179 00:09:29,000 --> 00:09:31,000 Begitu juga, jika saya mahu memanggil kaedah dengan satu hujah, 180 00:09:31,000 --> 00:09:34,000 jadi ini adalah kaedah bar, yang mengambil satu hujah, 181 00:09:34,000 --> 00:09:38,000 dan di sini adalah Baz: kaedah qux, jadi ini mengambil masa 2 hujah. 182 00:09:38,000 --> 00:09:44,000 Ini memanggil satu fungsi pada ini o objek. 183 00:09:44,000 --> 00:09:46,000 Masuk akal? 184 00:09:46,000 --> 00:09:50,000 Sintaks harus masuk akal, tetapi anda jenis mendapatkan digunakan untuk ia. 185 00:09:50,000 --> 00:09:54,000 >> Okay, mari kita bercakap tentang beberapa perkara yang dibina ke dalam Objektif-C 186 00:09:54,000 --> 00:09:56,000 yang tidak semestinya dibina ke C. 187 00:09:56,000 --> 00:09:59,000 Dalam C kita jenis terpaksa berhadapan dengan tali kerana ini barisan watak bodoh, 188 00:09:59,000 --> 00:10:01,000 dan ia mendapat benar-benar menjengkelkan. 189 00:10:01,000 --> 00:10:04,000 Objektif-C mempunyai mereka semua dibina untuk kita, dan ia dibina di 190 00:10:04,000 --> 00:10:06,000 menggunakan kelas ini dipanggil NSString. 191 00:10:06,000 --> 00:10:10,000 Apabila saya mahu untuk mewujudkan NSString kita mempunyai sintaks lebih batin. 192 00:10:10,000 --> 00:10:15,000 Bukannya mengatakan "cs50" kita katakan @ "cs50" 193 00:10:15,000 --> 00:10:17,000 dan ini hanya sintaks untuk mengisytiharkan rentetan dalam Objektif-C-. 194 00:10:17,000 --> 00:10:21,000 Ini adalah amat mudah lupa, jadi jangan. 195 00:10:21,000 --> 00:10:24,000 Kini, apabila saya mempunyai ini, ini adalah rentetan, tetapi notis 196 00:10:24,000 --> 00:10:26,000 ia adalah benar-benar hanya objek. 197 00:10:26,000 --> 00:10:30,000 Saya berkata NSString, yang bermaksud saya telah instantiated kelas 198 00:10:30,000 --> 00:10:32,000 dipanggil NSString, yang mana orang lain menulis untuk saya, 199 00:10:32,000 --> 00:10:35,000 dan mereka sangat baik tentang ia, dan sebagainya sekarang 200 00:10:35,000 --> 00:10:37,000 Saya boleh mula memanggil kaedah di atasnya. 201 00:10:37,000 --> 00:10:40,000 Jika saya panggil kaedah panjang pada objek ini s 202 00:10:40,000 --> 00:10:43,000 ia akan kembali kepada saya panjang rentetan. 203 00:10:43,000 --> 00:10:45,000 Ini adalah seperti strlen di C. 204 00:10:45,000 --> 00:10:47,000 Ini akan kembali 4. 205 00:10:47,000 --> 00:10:51,000 >> Begitu juga, satu lagi kaedah yang saya mungkin mahu mengambil berat tentang adalah characterAtIndex ini. 206 00:10:51,000 --> 00:10:54,000 Ini adalah satu kaedah yang mengatakan bahawa pada rentetan ini s 207 00:10:54,000 --> 00:10:57,000 Saya mahu anda untuk mendapatkan watak 0, 208 00:10:57,000 --> 00:10:59,000 dan sebagainya ini akan kembali kepada saya c aksara, 209 00:10:59,000 --> 00:11:02,000 dan ada sekumpulan keseluruhan lebih kaedah ini bahawa anda boleh Google benar-benar mudah. 210 00:11:02,000 --> 00:11:07,000 Dokumentasi Apple besar, dan kita akan melihat bahawa dalam sedikit. 211 00:11:07,000 --> 00:11:09,000 Mereka adalah rentetan. 212 00:11:09,000 --> 00:11:11,000 Kami juga telah array saiz berubah-ubah yang dibina masuk 213 00:11:11,000 --> 00:11:13,000 Ingat dalam C apabila kita mengisytiharkan array 214 00:11:13,000 --> 00:11:16,000 kita terpaksa untuk mengatakan anda mempunyai 5 elemen, akhir cerita. 215 00:11:16,000 --> 00:11:18,000 Apabila kita mendapat JavaScript dan PHP kita boleh mula 216 00:11:18,000 --> 00:11:20,000 melakukan perkara-perkara seperti menambah unsur-unsur atau bergerak unsur-unsur. 217 00:11:20,000 --> 00:11:22,000 Kita boleh melakukan perkara yang sama dalam Objektif-C-. 218 00:11:22,000 --> 00:11:26,000 Bukannya mewujudkan pelbagai cara C biasa 219 00:11:26,000 --> 00:11:30,000 kita ada lagi satu lagi kelas yang dipanggil NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Terdapat juga NSArray, 221 00:11:33,000 --> 00:11:35,000 dan ini akan pada dasarnya merangkumi pelbagai beberapa. 222 00:11:35,000 --> 00:11:38,000 Ini berkata, perkara pertama yang saya mahu lakukan adalah saya ingin memperuntukkan 223 00:11:38,000 --> 00:11:41,000 ruang untuk pelbagai baru, dan selepas saya memperuntukkan ia 224 00:11:41,000 --> 00:11:43,000 Saya kemudian perlu untuk memulakan ia. 225 00:11:43,000 --> 00:11:45,000 Sekali lagi, hanya memanggil kedua-2 kaedah. 226 00:11:45,000 --> 00:11:48,000 Sekarang ini bermakna bahawa dalam objek ini 227 00:11:48,000 --> 00:11:50,000 Saya telah pelbagai kosong duduk di sana. 228 00:11:50,000 --> 00:11:54,000 Jika saya mahu menambah sesuatu kepada pelbagai ini, saya boleh memanggil kaedah addObject. 229 00:11:54,000 --> 00:11:59,000 Saya ingin menambah objek kepada pelbagai satu, dan saya ingin menambah rentetan CS50. 230 00:11:59,000 --> 00:12:02,000 Jika saya mahu sebaliknya membuang yang boleh saya katakan saya mahu 231 00:12:02,000 --> 00:12:09,000 membuang objek di tempat pertama pada array atau membantah. 232 00:12:09,000 --> 00:12:11,000 >> Masuk akal? 233 00:12:11,000 --> 00:12:14,000 Okay, anda jenis mendapatkan digunakan untuk perkara ini kurungan persegi. 234 00:12:14,000 --> 00:12:18,000 By the way, dalam banyak perpustakaan Apple anda akan melihat NS ini. 235 00:12:18,000 --> 00:12:21,000 NS sebenarnya bermaksud untuk langkah seterusnya, yang merupakan salah satu daripada Steve Jobs pertama syarikat, 236 00:12:21,000 --> 00:12:24,000 dan itulah di mana dia benar-benar mula menulis banyak kod 237 00:12:24,000 --> 00:12:27,000 sebagai jenis asas untuk Mac OS X dan semua barangan yang lain, 238 00:12:27,000 --> 00:12:32,000 dan sebagainya NS ini adalah jenis warisan ini bagus melaungkan kepada salah satu syarikat awal 239 00:12:32,000 --> 00:12:34,000 kembali apabila Apple pertama kali bermula. 240 00:12:34,000 --> 00:12:36,000 Ia adalah di mana-mana. 241 00:12:36,000 --> 00:12:41,000 Mari kita lihat pada contoh yang lebih menyeluruh Objektif-C. 242 00:12:41,000 --> 00:12:44,000 Di sini saya dalam XCode. 243 00:12:44,000 --> 00:12:47,000 Untuk sampai ke sini, saya mula-mula turun XCode dari App Store, 244 00:12:47,000 --> 00:12:50,000 membuka ia naik, dan kemudian saya pergi di sini untuk fail, 245 00:12:50,000 --> 00:12:54,000 di sini untuk projek baru, dan kemudian. 246 00:12:54,000 --> 00:12:57,000 Selepas saya berbuat demikian saya mempunyai semua pilihan ini apa yang saya mahu untuk mewujudkan, 247 00:12:57,000 --> 00:12:59,000 dan sebagainya kita akan mengambil melihat pilihan ini kemudian, 248 00:12:59,000 --> 00:13:03,000 tetapi hanya untuk contoh ini, kerana kita sebenarnya tidak akan mempunyai app lagi, 249 00:13:03,000 --> 00:13:06,000 Saya datang ke sini, dan saya berkata Command Line Tool, 250 00:13:06,000 --> 00:13:09,000 dan ini merupakan satu aplikasi yang saya boleh dijalankan pada baris arahan 251 00:13:09,000 --> 00:13:12,000 sama seperti kita telah berjalan dari C. 252 00:13:12,000 --> 00:13:16,000 Itulah bagaimana saya mencipta projek ini, dan jadi sekarang saya di sini, 253 00:13:16,000 --> 00:13:20,000 jadi mari kita melihat pertama di fail ini, dan ini harus kelihatan agak biasa. 254 00:13:20,000 --> 00:13:24,000 Saya mempunyai nama int. Ada argc kawan saya, buddy argv lain saya. 255 00:13:24,000 --> 00:13:30,000 Dan supaya kita boleh melihat bahawa ini adalah titik kemasukan bagi permohonan pertama saya Objektif-C. 256 00:13:30,000 --> 00:13:32,000 Di sini kita boleh mengabaikan ini buat masa sekarang. 257 00:13:32,000 --> 00:13:35,000 Ini adalah pada dasarnya beberapa barangan pengurusan memori yang anda tidak akan benar-benar 258 00:13:35,000 --> 00:13:37,000 pernah perlu bimbang tentang. 259 00:13:37,000 --> 00:13:39,000 >> Mari kita lihat pada blok pertama ini di sini. 260 00:13:39,000 --> 00:13:46,000 Ini baris pertama, jika saya katakan Pelajar * alice = [[Pelajar alloc] INIT] apa bahawa melakukan? 261 00:13:46,000 --> 00:13:50,000 Ini pelajar pertama di sini, ini adalah mungkin kelas. 262 00:13:50,000 --> 00:13:54,000 Ini bukan satu kelas bahawa Apple menulis, tetapi ia adalah kelas yang saya tulis. 263 00:13:54,000 --> 00:13:57,000 Perkara pertama yang saya mahu lakukan adalah saya ingin memperuntukkan ruang untuk pelajar baru, 264 00:13:57,000 --> 00:14:00,000 dan kemudian saya mahu untuk memulakan, jadi ini memberikan saya kembali 265 00:14:00,000 --> 00:14:05,000 objek ini pelajar baru, dan saya menyimpan ini dalam pembolehubah dipanggil Alice. 266 00:14:05,000 --> 00:14:07,000 Di manakah kelas itu datang dari? 267 00:14:07,000 --> 00:14:12,000 Nah, di sini pada sebelah kiri ini adalah semua fail yang berbeza di dalam projek saya. 268 00:14:12,000 --> 00:14:16,000 Kita boleh lihat di sini saya mempunyai Student.h dan Student.m satu. 269 00:14:16,000 --> 00:14:20,000 Fail h, ingat, adalah di mana saya mengisytiharkan semua perkara 270 00:14:20,000 --> 00:14:22,000 yang akan wujud dalam kelas. 271 00:14:22,000 --> 00:14:25,000 >> Mari kita lihat pada itu. 272 00:14:25,000 --> 00:14:29,000 Baiklah, di sini kita mempunyai ini antara muka @, dan ini mengatakan bahawa di sini datang 273 00:14:29,000 --> 00:14:33,000 pengisytiharan segala-galanya yang akan wujud dalam kelas saya. 274 00:14:33,000 --> 00:14:36,000 Maka saya mempunyai kolon. Kemudian saya mempunyai perkara ini NSObject. 275 00:14:36,000 --> 00:14:40,000 Kolon Ini menandakan bahawa sedikit harta pusaka yang kita telah membincangkan sedikit awal. 276 00:14:40,000 --> 00:14:43,000 Ini kata segala-galanya NSObject boleh lakukan 277 00:14:43,000 --> 00:14:46,000 mana NSObject adalah kelas ini ditulis oleh orang lain, 278 00:14:46,000 --> 00:14:50,000 segala-galanya NSObject ini boleh dilakukan saya mahu menjadi mampu untuk berbuat demikian. 279 00:14:50,000 --> 00:14:54,000 Dengan berkata: NSObject yang bermakna bahawa Saya pada dasarnya 280 00:14:54,000 --> 00:14:58,000 mewarisi semua fungsi kelas lain. 281 00:14:58,000 --> 00:15:02,000 Itu benar-benar memberi saya sekumpulan keseluruhan kaedah hartanah dan berbeza yang boleh saya gunakan. 282 00:15:02,000 --> 00:15:05,000 Down sini saya mewujudkan 2 hartanah. 283 00:15:05,000 --> 00:15:08,000 Ini bermakna pelajar saya, jika ini adalah struct, ini akan menjadi 2 perkara 284 00:15:08,000 --> 00:15:11,000 dalam struct saya, jadi setiap pelajar mempunyai nama 285 00:15:11,000 --> 00:15:14,000 yang adalah rentetan, dan pelajar juga mempunyai gred, 286 00:15:14,000 --> 00:15:17,000 yang int. 287 00:15:17,000 --> 00:15:23,000 >> Akhirnya, turun di sini saya akan untuk mewujudkan satu kaedah untuk pelajar saya. 288 00:15:23,000 --> 00:15:26,000 Saya dipanggil kaedah saya, initWithName, dan ia mengambil satu hujah, 289 00:15:26,000 --> 00:15:31,000 dan hujah itu adalah rentetan, dan saya memanggilnya menamakan. 290 00:15:31,000 --> 00:15:35,000 Sekarang mari kita melihat bagaimana kita sebenarnya melaksanakan kelas ini. 291 00:15:35,000 --> 00:15:38,000 Di sini, kini saya dalam file m. Saya, 292 00:15:38,000 --> 00:15:40,000 m untuk pelaksanaan, saya rasa. 293 00:15:40,000 --> 00:15:44,000 Saya mempunyai pelaksanaan, akhir saya, dan di sini adalah di mana saya sebenarnya menentukan 294 00:15:44,000 --> 00:15:47,000 apa initWithName tidak. 295 00:15:47,000 --> 00:15:50,000 Saya mempunyai initWithName, nama parameter saya, dan kemudian ini 296 00:15:50,000 --> 00:15:53,000 adalah di mana saya sebenarnya mewujudkan pelajar, 297 00:15:53,000 --> 00:15:56,000 dan sebagainya ini adalah sedikit samar, tetapi ini adalah jenis boilerplate 298 00:15:56,000 --> 00:15:58,000 yang anda mahu termasuk dalam pengeluar anda. 299 00:15:58,000 --> 00:16:02,000 Ini fungsi pengawalan sini, initWithName, adalah sejenis pembina. 300 00:16:02,000 --> 00:16:05,000 Anda pada dasarnya membina objek pelajar baru 301 00:16:05,000 --> 00:16:07,000 dan mungkin menghantar beberapa data di dalamnya. 302 00:16:07,000 --> 00:16:11,000 Perkara pertama yang saya mahu lakukan ialah saya mahu panggil Init pada perkara ini super. 303 00:16:11,000 --> 00:16:15,000 >> Ingatlah bahawa apabila saya kembali di sini di fail h 304 00:16:15,000 --> 00:16:21,000 yang semua NSObject satu mempunyai pelajar juga mempunyai. 305 00:16:21,000 --> 00:16:24,000 Itu bermakna apabila hendak mencipta seorang pelajar apa yang saya juga perlu lakukan ialah 306 00:16:24,000 --> 00:16:28,000 pastikan bahawa NSObject yang saya warisi semua data dari 307 00:16:28,000 --> 00:16:32,000 juga dimulakan dengan betul. 308 00:16:32,000 --> 00:16:36,000 Apa yang saya perlu katakan adalah super ini sebenarnya akan merujuk kepada kelas induk 309 00:16:36,000 --> 00:16:39,000 yang saya warisi dari, jadi saya mahu pastikan saya memulakan 310 00:16:39,000 --> 00:16:43,000 segala-galanya bahawa saya bergantung kepada sebelum saya mula cuba untuk menggunakannya. 311 00:16:43,000 --> 00:16:46,000 Kemudian jika itu dimulakan betul ini adalah hanya seperti mengatakan jika malloc 312 00:16:46,000 --> 00:16:50,000 tidak kembali batal maka saya boleh mula menetapkan beberapa harta. 313 00:16:50,000 --> 00:16:54,000 >> JavaScript dan PHP kami telah kata kunci ini dipanggil ini, 314 00:16:54,000 --> 00:16:58,000 dan ini dirujuk kepada contoh semasa kelas. 315 00:16:58,000 --> 00:17:00,000 Dalam Objektif C-kita panggil diri ini. 316 00:17:00,000 --> 00:17:04,000 Bila saya katakan self.name, ini bermakna bahawa objek 317 00:17:04,000 --> 00:17:07,000 Saya hanya menciptakan apabila saya berkata pelajar alloc Init, 318 00:17:07,000 --> 00:17:09,000 yang akan memberikan saya kembali objek. 319 00:17:09,000 --> 00:17:12,000 Ini bermakna saya mahu untuk menetapkan nama objek itu 320 00:17:12,000 --> 00:17:15,000 apa yang saya sahaja berlalu. 321 00:17:15,000 --> 00:17:18,000 Sama seperti dalam C, kita mengakses ahli dengan titik ini, 322 00:17:18,000 --> 00:17:21,000 jadi self.name kata nama objek pelajar 323 00:17:21,000 --> 00:17:24,000 kini akan menjadi apa sahaja yang anda hanya lulus masuk 324 00:17:24,000 --> 00:17:28,000 Dan begitu akhirnya, saya boleh kembali jadi saya benar-benar mendapatkan kembali sesuatu. 325 00:17:28,000 --> 00:17:30,000 >> Soalan? 326 00:17:30,000 --> 00:17:34,000 Okay, jadi diri ini = super Init, 327 00:17:34,000 --> 00:17:37,000 jika anda tidak benar-benar memahami barangan warisan jangan bimbang. 328 00:17:37,000 --> 00:17:40,000 Hanya tahu bahawa jika anda pernah mahu untuk membuat kaedah INIT anda sendiri hanya 329 00:17:40,000 --> 00:17:42,000 berbuat demikian, dan anda akan baik untuk pergi. 330 00:17:42,000 --> 00:17:44,000 Yeah. >> [Pelajar] Apakah jika min diri? 331 00:17:44,000 --> 00:17:49,000 Ini bermakna apabila kita malloc sesuatu yang kita sentiasa diperiksa jika ia adalah sama dengan null, 332 00:17:49,000 --> 00:17:51,000 dan jika ia adalah batal, maka kita keluar. 333 00:17:51,000 --> 00:17:55,000 Ini adalah perkara yang sama, kerana jika ini pulangan batal, maka kita mungkin akan kesalahan seg 334 00:17:55,000 --> 00:17:57,000 jika kita mula cuba untuk memanipulasi ia. 335 00:17:57,000 --> 00:18:01,000 Itulah kelas pelajar kita. 336 00:18:01,000 --> 00:18:03,000 Ini bermakna kita boleh memulakan pelajar kita dalam salah satu daripada dua cara. 337 00:18:03,000 --> 00:18:08,000 Jika saya katakan alloc pelajar Init Saya tidak menggunakan kaedah itu bahawa saya hanya menulis, 338 00:18:08,000 --> 00:18:11,000 dan sebaliknya saya hanya boleh mengatakan alice.name, 339 00:18:11,000 --> 00:18:14,000 dan sekarang saya akan menetapkan bahawa nama hartanah. 340 00:18:14,000 --> 00:18:17,000 >> Begitu juga, jika saya mahu menggunakan bahawa kaedah initWithName 341 00:18:17,000 --> 00:18:20,000 Saya hanya boleh mengatakan alloc, dan kemudian bukannya mengatakan INIT 342 00:18:20,000 --> 00:18:24,000 Saya akan memanggil bahawa kaedah yang saya hanya dicipta, dan saya akan lulus dalam Bob. 343 00:18:24,000 --> 00:18:30,000 Pada ketika ini, ini Bob objek mempunyai nama yang sama dengan Bob. 344 00:18:30,000 --> 00:18:35,000 Okay, turun di sini saya menggunakan bahawa NSMutableArray bahawa kita melihat awal. 345 00:18:35,000 --> 00:18:38,000 Saya memperuntukkan space.Then Saya Memulakan pelbagai baru. 346 00:18:38,000 --> 00:18:40,000 Saya akan menambah 2 perkara. 347 00:18:40,000 --> 00:18:43,000 Array ini kini memegang objek pelajar. 348 00:18:43,000 --> 00:18:46,000 Perhatikan bahawa mana-mana saya tidak perlu untuk mengatakan ini adalah pelbagai pelajar. 349 00:18:46,000 --> 00:18:48,000 Saya berkata ia adalah pelbagai, tempoh. 350 00:18:48,000 --> 00:18:50,000 Kemudian saya boleh meletakkan apa-apa di dalamnya yang saya mahu. 351 00:18:50,000 --> 00:18:52,000 Di sini saya mempunyai 2 objek. 352 00:18:52,000 --> 00:18:56,000 >> Akhirnya, saya mempunyai objek lain di sini, TF ini. 353 00:18:56,000 --> 00:18:59,000 Lebih sini di TF.h pada dasarnya perkara yang sama. 354 00:18:59,000 --> 00:19:01,000 Saya warisi dari NSObject, dan dengan cara yang, 355 00:19:01,000 --> 00:19:03,000 apabila anda membuat kelas ini semua dilakukan untuk anda, 356 00:19:03,000 --> 00:19:06,000 ini jenis boilerplate muka. 357 00:19:06,000 --> 00:19:08,000 Ia mempunyai harta pelajar. 358 00:19:08,000 --> 00:19:15,000 Saya mempunyai kaedah pasangan di sini yang tidak benar-benar melakukan banyak keseluruhan, 359 00:19:15,000 --> 00:19:18,000 dan sebagainya yang bermakna selepas saya mencipta objek ini TF 360 00:19:18,000 --> 00:19:23,000 Saya boleh memanggil ini gred kaedah di atasnya seperti ini. 361 00:19:23,000 --> 00:19:26,000 Sebarang soalan mengenai sintaks Objektif-C sebelum kita mula bergerak ke beberapa lebih 362 00:19:26,000 --> 00:19:30,000 barangan pembangunan aplikasi menarik? 363 00:19:30,000 --> 00:19:34,000 >> Okay, jadi mari kita sebenarnya membuat aplikasi iPhone. 364 00:19:34,000 --> 00:19:39,000 Kelas teras yang anda akan menggunakan dalam aplikasi iPhone anda dipanggil pengawal pandangan, 365 00:19:39,000 --> 00:19:42,000 dan pengawal pandangan pada dasarnya mewakili skrin tunggal 366 00:19:42,000 --> 00:19:46,000 dalam aplikasi anda, jadi jika saya pada aplikasi muzik, sebagai contoh, 367 00:19:46,000 --> 00:19:50,000 satu pandangan pengawal boleh mewakili pandangan di mana saya melihat semua lagu-lagu di bawah saya. 368 00:19:50,000 --> 00:19:53,000 Satu lagi pengawal pandangan boleh apabila saya klik lagu dan mula bermain 369 00:19:53,000 --> 00:19:55,000 atau kerana saya penggerudian ke dalam artis. 370 00:19:55,000 --> 00:19:59,000 Setiap mereka skrin yang berbeza boleh diwakili sebagai pengawal pandangan yang berbeza, 371 00:19:59,000 --> 00:20:04,000 dan pengawal pandangan adalah benar-benar hanya satu kelas yang mengatakan bagaimana skrin ini berfungsi. 372 00:20:04,000 --> 00:20:07,000 Perkara dalam pengawal pemandangan, kita akan mempunyai sifat, 373 00:20:07,000 --> 00:20:10,000 jadi perkara-perkara seperti butang akan menjadi harta pengawal pandangan kita. 374 00:20:10,000 --> 00:20:13,000 >> Kami juga akan mempunyai kaedah, dan ini adalah pada dasarnya pengendali acara. 375 00:20:13,000 --> 00:20:16,000 Kaedah ini mengatakan apabila anda menekan butang ini 376 00:20:16,000 --> 00:20:19,000 Saya mahu melakukan sesuatu, dan akhirnya, sekali lagi, 377 00:20:19,000 --> 00:20:24,000 kita akan menggunakan kata kunci ini diri untuk mengakses contoh semasa. 378 00:20:24,000 --> 00:20:29,000 Untuk membina antara muka di IOS adalah sebenarnya benar-benar, benar-benar mudah. 379 00:20:29,000 --> 00:20:32,000 Mereka mempunyai ini heret bagus dan drop antara muka dipanggil Interface Builder, 380 00:20:32,000 --> 00:20:37,000 dan 2 konsep yang teras dawai sehingga Objektif-C anda untuk Interface Builder 381 00:20:37,000 --> 00:20:40,000 adalah IBOutlet dan IBAction. 382 00:20:40,000 --> 00:20:44,000 IBOutlet hanya berkata bahawa jika anda mengisytiharkan harta itulah butang, 383 00:20:44,000 --> 00:20:47,000 dan anda mahu cangkuk ia sehingga sesuatu dalam UI sebenar anda, 384 00:20:47,000 --> 00:20:49,000 anda akan mengatakan ia adalah sebuah kedai. 385 00:20:49,000 --> 00:20:51,000 Begitu juga, jika anda mahu untuk mewakili pengendali acara 386 00:20:51,000 --> 00:20:54,000 maka anda akan mengatakan ia adalah suatu tindakan. 387 00:20:54,000 --> 00:20:57,000 >> Untuk benar-benar wayar ini perwakilan grafik 388 00:20:57,000 --> 00:21:00,000 dan kod anda, ia benar-benar, benar-benar mudah. 389 00:21:00,000 --> 00:21:03,000 Jika anda ingin melampirkan IBOutlet satu, semua yang anda perlu lakukan ialah anda mengawal klik, 390 00:21:03,000 --> 00:21:05,000 dan kita akan melihat satu contoh ini benar-benar cepat. 391 00:21:05,000 --> 00:21:07,000 Anda mengawal klik mana ia berkata Pengawal View. 392 00:21:07,000 --> 00:21:09,000 Anda akan mengheret ke muka, atau sebaliknya, 393 00:21:09,000 --> 00:21:13,000 jika anda mahu untuk bertemu pengendali acara anda akan mengheret dari antara muka 394 00:21:13,000 --> 00:21:15,000 dalam arah yang lain. 395 00:21:15,000 --> 00:21:20,000 Mari kita lihat pada contoh IOS benar-benar mudah. 396 00:21:20,000 --> 00:21:23,000 >> Mari kita buat satu projek baru. 397 00:21:23,000 --> 00:21:25,000 Saya akan datang sini untuk Permohonan, 398 00:21:25,000 --> 00:21:28,000 dan saya akan klik Permohonan View Single. 399 00:21:28,000 --> 00:21:31,000 Saya akan klik seterusnya. Saya akan memberikan projek saya nama. 400 00:21:31,000 --> 00:21:33,000 Saya akan memanggilnya Hello. 401 00:21:33,000 --> 00:21:36,000 Menariknya, Apple menganggap anda mewujudkan produk 402 00:21:36,000 --> 00:21:38,000 supaya anda boleh menjual dan mereka boleh membuat wang. 403 00:21:38,000 --> 00:21:41,000 Down di sini saya akan mengatakan bahawa ini adalah satu aplikasi iPhone. 404 00:21:41,000 --> 00:21:44,000 Anda boleh mewujudkan aplikasi iPad, atau jika anda mahu untuk mewujudkan satu aplikasi mereka 405 00:21:44,000 --> 00:21:47,000 yang menyokong kedua-dua peranti anda boleh melakukannya juga. 406 00:21:47,000 --> 00:21:49,000 Ini adalah apa yang anda mahu checkmarks anda untuk kelihatan seperti. 407 00:21:49,000 --> 00:21:51,000 >> Anda mahu menggunakan papan cerita, yang kita akan lihat nanti, 408 00:21:51,000 --> 00:21:54,000 dan anda pasti mahu untuk menggunakan pengiraan rujukan automatik, 409 00:21:54,000 --> 00:21:58,000 yang merupakan ciri baik yang menghalang anda daripada perlu untuk mengatakan malloc dan bebas. 410 00:21:58,000 --> 00:22:03,000 Melainkan jika anda mahu panggil malloc dan bebas, saya akan meninggalkan didaftar ini. 411 00:22:03,000 --> 00:22:07,000 Saya akan klik seterusnya, dan akhirnya, ini akan bertanya kepada saya di mana saya mahu menyimpannya. 412 00:22:07,000 --> 00:22:14,000 Saya melanda akan mencipta, dan di sini kita pergi. 413 00:22:14,000 --> 00:22:16,000 Saya telah mencipta satu projek baru. 414 00:22:16,000 --> 00:22:19,000 Lebih sini di sebelah kiri adalah semua fail yang berada di dalam projek saya, 415 00:22:19,000 --> 00:22:22,000 dan notis bahawa saya mendapat sekumpulan keseluruhan, dan saya tidak berbuat apa-apa. 416 00:22:22,000 --> 00:22:24,000 IOS adalah besar. 417 00:22:24,000 --> 00:22:27,000 >> Sebagai contoh, di sini ViewController.h ini, 418 00:22:27,000 --> 00:22:30,000 ini akan mewakili pengawal pandangan pertama saya, 419 00:22:30,000 --> 00:22:32,000 jadi skrin pertama di dalam aplikasi saya. 420 00:22:32,000 --> 00:22:34,000 Sekarang kita tahu apa ini mengatakan. 421 00:22:34,000 --> 00:22:36,000 Kami mengatakan saya memanggil ini ViewController kelas, 422 00:22:36,000 --> 00:22:40,000 dan ViewController tidak semua bahawa seorang UIViewController tidak, 423 00:22:40,000 --> 00:22:43,000 dan ini, sekali lagi, adalah beberapa kelas bahawa Apple menulis bahawa tidak banyak barangan berguna untuk kita 424 00:22:43,000 --> 00:22:46,000 suka memaparkan skrin. 425 00:22:46,000 --> 00:22:50,000 Berikut adalah di mana saya benar-benar boleh mula menentukan apa pengawal pandangan saya tidak, 426 00:22:50,000 --> 00:22:52,000 dan ia ternyata bahawa saya benar-benar tidak perlu mana-mana ini. 427 00:22:52,000 --> 00:22:55,000 Ini adalah kod boilerplate bahawa Apple memberikan saya secara percuma. 428 00:22:55,000 --> 00:22:59,000 Saya tidak memerlukan bahawa baris pertama, atau saya tidak mempunyai kelas, 429 00:22:59,000 --> 00:23:02,000 supaya kita boleh menghilangkan itu dan menghilangkan ini. 430 00:23:02,000 --> 00:23:05,000 Okay, jadi ini adalah skrin kosong saya. 431 00:23:05,000 --> 00:23:08,000 >> Sekarang mari itu klik pada MainStoryboard.storyboard ini, 432 00:23:08,000 --> 00:23:11,000 dan ini adalah di mana ia bermula untuk mendapatkan menarik. 433 00:23:11,000 --> 00:23:14,000 Ini merupakan skrin pertama pada apl saya. 434 00:23:14,000 --> 00:23:17,000 Jika saya ingin menambah butang, dalam HTML Saya terpaksa mewujudkan tag butang. 435 00:23:17,000 --> 00:23:20,000 Dalam Android anda mempunyai untuk mencipta tag butang, 436 00:23:20,000 --> 00:23:23,000 tetapi dalam IOS jika saya hanya datang ke sini ke kanan bawah 437 00:23:23,000 --> 00:23:27,000 dan jika saya klik pada satu ini 3 di sini di mana ia mengatakan Objek, 438 00:23:27,000 --> 00:23:31,000 dan saya boleh tatal ke bawah, atau saya boleh mula mencari butang. 439 00:23:31,000 --> 00:23:35,000 Dan melihat, butang, jadi jika saya sebenarnya seret dan menggugurkan hak ini di sana, 440 00:23:35,000 --> 00:23:38,000 Saya baru sahaja menambah butang ke skrin ini di aplikasi saya. 441 00:23:38,000 --> 00:23:41,000 Jika saya mahu menukar teks, saya boleh klik dua kali, 442 00:23:41,000 --> 00:23:47,000 mengatakan sesuatu yang menarik seperti "Tekan Me." 443 00:23:47,000 --> 00:23:51,000 Okay, sekarang jika saya menjalankan aplikasi ini, jadi kami menyusun, 444 00:23:51,000 --> 00:23:54,000 jadi untuk menjalankannya saya klik butang play di sebelah kiri atas, dan terdapat aplikasi saya. 445 00:23:54,000 --> 00:23:58,000 Saya tidak berbuat apa-apa, dan saya mendapat iPhone manis mencari aplikasi. 446 00:23:58,000 --> 00:24:01,000 Jika saya mahu berhenti, anda boleh klik butang henti 447 00:24:01,000 --> 00:24:03,000 kerana ia lebih menyeronokkan. 448 00:24:03,000 --> 00:24:07,000 >> Mari kita mengatakan bahawa saya benar-benar mahu sesuatu yang berlaku apabila saya menekan butang ini. 449 00:24:07,000 --> 00:24:09,000 Untuk melakukan bahawa apa yang saya perlu lakukan ialah saya perlu untuk mewujudkan 450 00:24:09,000 --> 00:24:13,000 acara pengendali baru atau sesuatu tindakan. 451 00:24:13,000 --> 00:24:16,000 Ini bermakna bahawa saya perlu untuk mewujudkan beberapa kaedah yang saya mahu dipanggil 452 00:24:16,000 --> 00:24:18,000 apabila saya menekan butang, jadi mari kita mewujudkan satu kaedah baru. 453 00:24:18,000 --> 00:24:20,000 Saya dalam ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Saya perlu mengatakan bahawa kaedah wujud. 455 00:24:22,000 --> 00:24:26,000 Saya memerlukan sempang pertama kerana saya akan memanggil ini pada pengawal pandangan. 456 00:24:26,000 --> 00:24:28,000 Saya perlukan untuk memberi jenis ini. 457 00:24:28,000 --> 00:24:31,000 Jenis ini akan menjadi bahawa perkara IBAction yang kita lihat sebelum ini. 458 00:24:31,000 --> 00:24:35,000 Ini merupakan pengendali acara, jadi ia akan kembali IBAction, 459 00:24:35,000 --> 00:24:38,000 dan ini adalah petunjuk untuk XCode untuk mengatakan bahawa 460 00:24:38,000 --> 00:24:40,000 ini adalah sesuatu yang saya mahu untuk wayar sesuatu untuk. 461 00:24:40,000 --> 00:24:45,000 Saya boleh memberikan nama, seperti buttonPressed, koma bernoktah. 462 00:24:45,000 --> 00:24:48,000 >> Sekarang saya telah diisytiharkan sebagai kaedah baru di dalam kelas saya. 463 00:24:48,000 --> 00:24:50,000 Saya telah berkata kaedah ini telah wujud. 464 00:24:50,000 --> 00:24:53,000 Sekarang mari itu datang ke ViewController.m, 465 00:24:53,000 --> 00:24:56,000 dan katakan apa kaedah ini boleh dilakukan. 466 00:24:56,000 --> 00:25:03,000 Jika saya mula menaip, sebagai contoh, (tidak sah) buttonPressed 467 00:25:03,000 --> 00:25:06,000 notis XCode adalah benar-benar bagus dan autocompletes bagi saya. 468 00:25:06,000 --> 00:25:09,000 Itu benar-benar indah. 469 00:25:09,000 --> 00:25:12,000 Notis di sini bahawa di dalam fail. M Saya juga boleh mengatakan tidak sah, 470 00:25:12,000 --> 00:25:15,000 dan ini adalah kerana IBAction bahawa sebenarnya bukanlah jenis. 471 00:25:15,000 --> 00:25:19,000 Ia sebenarnya hashtag ditakrifkan tempat untuk menjadi tidak sah, 472 00:25:19,000 --> 00:25:22,000 dan sekali lagi, ini adalah hanya petunjuk untuk XCode yang mengatakan 473 00:25:22,000 --> 00:25:25,000 Saya mahu ini menjadi pengendali acara, dan kita akan melihat mengapa hanya dalam kedua. 474 00:25:25,000 --> 00:25:28,000 Apabila butang ini ditekan saya akan melakukan sesuatu yang menjengkelkan 475 00:25:28,000 --> 00:25:30,000 suka memaparkan popup. 476 00:25:30,000 --> 00:25:35,000 >> Untuk melakukan bahawa saya boleh membuat contoh baru kelas ini dipanggil UIAlertView, 477 00:25:35,000 --> 00:25:39,000 dan ini adalah kelas bahawa Apple menulis itu akan memaparkan popup menjengkelkan. 478 00:25:39,000 --> 00:25:43,000 Kami akan memanggil ini amaran timbul, dan saya mempunyai 2 langkah, ingat, untuk mewujudkan objek ini. 479 00:25:43,000 --> 00:25:46,000 Perkara pertama yang saya perlu lakukan ialah memperuntukkan ruang. 480 00:25:46,000 --> 00:25:48,000 Saya mahu UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Saya ingin memperuntukkan ruang. Itulah kaedah pertama saya. 482 00:25:51,000 --> 00:25:53,000 Kaedah seterusnya saya adalah saya mahu untuk memulakan, 483 00:25:53,000 --> 00:25:58,000 dan jadi saya mempunyai ini besar, kaedah lama dipanggil initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Itu pada asasnya akan mengawal apa yang timbul ini berkata. 485 00:26:01,000 --> 00:26:04,000 Gelaran timbul saya boleh hello. 486 00:26:04,000 --> 00:26:08,000 Mesej ini timbul boleh menjadi "Ini adalah IOS." 487 00:26:08,000 --> 00:26:10,000 Perkara Perwakilan, saya tidak tahu apa yang. 488 00:26:10,000 --> 00:26:13,000 Mari kita mengatakan ia tidak. 489 00:26:13,000 --> 00:26:18,000 Sekarang butang yang akan muncul boleh mengatakan sesuatu seperti "Ia pasti adalah," 490 00:26:18,000 --> 00:26:24,000 dan saya tidak benar-benar mahu mana-mana butang lain, jadi mari kita memadamkannya dan tutup kurungan. 491 00:26:24,000 --> 00:26:27,000 >> Okay, saya mencipta salah satu tambahan. Terdapat kita pergi. 492 00:26:27,000 --> 00:26:30,000 Ini adalah bagaimana saya boleh mewujudkan timbul baru. 493 00:26:30,000 --> 00:26:35,000 Jika saya mahu sebenarnya menunjukkan yang timbul, saya mahu untuk memanggil kaedah menunjukkan. 494 00:26:35,000 --> 00:26:38,000 Untuk melakukan yang boleh saya katakan amaran dan menunjukkan, 495 00:26:38,000 --> 00:26:40,000 dan sekali lagi, autoselesai adalah super nice. 496 00:26:40,000 --> 00:26:42,000 Jika saya terlupa apa yang adalah, jika saya hanya ditaip dalam s, 497 00:26:42,000 --> 00:26:45,000 Saya boleh menatal di sini untuk mengetahui apa yang ia adalah, 498 00:26:45,000 --> 00:26:48,000 dan ia menapis baik. 499 00:26:48,000 --> 00:26:52,000 Sekarang saya mencipta ini timbul baru. 500 00:26:52,000 --> 00:26:55,000 Kita akan kembali apa perwakilan bermakna kemudian, 501 00:26:55,000 --> 00:26:58,000 dan sekarang saya ingin mengatakan saya mahu kaedah ini akan dipecat 502 00:26:58,000 --> 00:27:01,000 apabila saya tekan butang, jadi saya akan datang kembali ke papan cerita saya, 503 00:27:01,000 --> 00:27:04,000 dan saya mahu sekarang melampirkan IBAction ini. 504 00:27:04,000 --> 00:27:06,000 Perkara pertama yang anda mahu lakukan adalah klik butang. 505 00:27:06,000 --> 00:27:08,000 Apabila saya tekan butang ini saya ingin sesuatu untuk berlaku. 506 00:27:08,000 --> 00:27:10,000 Saya tidak akan tahan kawalan. 507 00:27:10,000 --> 00:27:13,000 Saya akan klik dan seret dari butang 508 00:27:13,000 --> 00:27:15,000 di sini di mana ia berkata Pengawal View. 509 00:27:15,000 --> 00:27:17,000 Kita boleh melihat bahawa ia baik menyala. 510 00:27:17,000 --> 00:27:22,000 >> Jika saya biarkan pergi dengan tetikus saya, saya kini mempunyai ini timbul di sini di mana saya mempunyai beberapa pilihan. 511 00:27:22,000 --> 00:27:24,000 Salah satu daripadanya adalah peristiwa-peristiwa yang saya boleh mendaftar. 512 00:27:24,000 --> 00:27:28,000 Ini semua adalah kaedah saya diisytiharkan dalam fail h saya sebagai IBActions. 513 00:27:28,000 --> 00:27:31,000 Ini adalah bagaimana XCode tahu apa yang sepatutnya muncul dalam senarai ini sedikit, 514 00:27:31,000 --> 00:27:33,000 supaya hanya petunjuk. 515 00:27:33,000 --> 00:27:37,000 Jika saya klik pada butang ditekan, saya kini berdaftar pengendali acara. 516 00:27:37,000 --> 00:27:41,000 Di JavaScript kita terpaksa untuk mengatakan saya mempunyai beberapa kod yang berdaftar pengendali acara. 517 00:27:41,000 --> 00:27:43,000 Dalam Objektif C-ia adalah benar-benar yang mudah. 518 00:27:43,000 --> 00:27:46,000 Jika saya menjalankan ini lagi 519 00:27:46,000 --> 00:27:49,000 sekarang apabila saya menekan butang pengendali acara saya akan api, 520 00:27:49,000 --> 00:27:51,000 dan saya akan untuk mendapatkan ini timbul. 521 00:27:51,000 --> 00:27:54,000 Super, super mudah di sana. 522 00:27:54,000 --> 00:27:57,000 >> Jika anda pernah mahu untuk melihat semua peristiwa-peristiwa yang berlaku yang hendak didaftarkan 523 00:27:57,000 --> 00:28:00,000 pada komponen jika saya klik pada butang ini 524 00:28:00,000 --> 00:28:02,000 dan saya datang ke sini untuk sebelah kanan 525 00:28:02,000 --> 00:28:05,000 pertama anda boleh lihat di sini saya boleh melakukan perkara-perkara seperti jenis butang, 526 00:28:05,000 --> 00:28:08,000 jadi jika anda mahu satu mereka saya atau butang kenalan add 527 00:28:08,000 --> 00:28:10,000 atau apa sahaja. 528 00:28:10,000 --> 00:28:13,000 Jika saya mahu lihat semua peristiwa yang pada butang ini 529 00:28:13,000 --> 00:28:16,000 jika saya datang sepanjang jalan di sini untuk sebelah kanan 530 00:28:16,000 --> 00:28:19,000 kita boleh lihat di sini pada peristiwa Saya mempunyai semua peristiwa-peristiwa yang berbeza. 531 00:28:19,000 --> 00:28:23,000 Saya boleh menekan butang, apabila saya melepaskan butang, apabila saya menggandakan paip atau apa sahaja, 532 00:28:23,000 --> 00:28:26,000 dan satu saya hanya berdaftar adalah acara ini dipanggil Touch Up Inside, 533 00:28:26,000 --> 00:28:29,000 dan ini mengatakan bahawa sebaik sahaja jari saya datang dari butang 534 00:28:29,000 --> 00:28:32,000 bahawa acara akan kebakaran, dan itulah apa yang hanya berlaku. 535 00:28:32,000 --> 00:28:36,000 Ini adalah jenis lalai acara butang ditekan. 536 00:28:36,000 --> 00:28:39,000 >> Sebarang soalan setakat ini? 537 00:28:39,000 --> 00:28:43,000 Okay, itu adalah bagaimana kita boleh memulakan wayar sehingga perkara dalam kod kami 538 00:28:43,000 --> 00:28:46,000 kepada perkara-perkara di dalam antara muka kita. 539 00:28:46,000 --> 00:28:49,000 Ingat perkara pertama yang kami terpaksa lakukan adalah untuk mencari kod, 540 00:28:49,000 --> 00:28:54,000 dan kemudian kita berwayar antara muka untuk kod, 541 00:28:54,000 --> 00:28:57,000 dan terdapat aplikasi pertama kami. 542 00:28:57,000 --> 00:29:00,000 Okay, itu benar-benar sejuk, dan kami mencipta butang ini. 543 00:29:00,000 --> 00:29:03,000 Bagaimana jika kita tidak mahu mempunyai untuk mewujudkan sekumpulan hartanah 544 00:29:03,000 --> 00:29:05,000 mewakili butang ini? 545 00:29:05,000 --> 00:29:08,000 Sebagai contoh, dalam Tic Tac Toe saya mempunyai 9 butang, 546 00:29:08,000 --> 00:29:11,000 dan ia akan menjadi super, super menjengkelkan untuk mempunyai untuk drag dan drop 9 kali 547 00:29:11,000 --> 00:29:14,000 atau jika saya terpaksa membuat Tic Tac Toe dengan 81 dan bukannya daripada 9 548 00:29:14,000 --> 00:29:17,000 dan saya terpaksa untuk seret dan lepaskan 81 kali, dan itulah tempang. 549 00:29:17,000 --> 00:29:20,000 Apa yang kita boleh lakukan dan bukannya adalah sama seperti HTML 550 00:29:20,000 --> 00:29:23,000 apabila kita mempunyai perkara-perkara seperti ID dan nama-nama dan kita boleh mencari perkara-perkara 551 00:29:23,000 --> 00:29:27,000 oleh ID mereka, terdapat tanggapan serupa dalam IOS dipanggil tags. 552 00:29:27,000 --> 00:29:31,000 >> Tag hanya pengecam unik berangka bagi komponen. 553 00:29:31,000 --> 00:29:34,000 Jika saya katakan ini mempunyai tag 0, sebagai contoh, 554 00:29:34,000 --> 00:29:38,000 jika saya membuat butang dan memberikan tag 0, dan kita akan melihat bagaimana untuk melakukannya dalam hanya sesaat, 555 00:29:38,000 --> 00:29:41,000 jika saya mahu mendapatkan butang yang saya hanya boleh katakan saya mahu panggil 556 00:29:41,000 --> 00:29:45,000 , viewWithTag kaedah pada objek di sini 557 00:29:45,000 --> 00:29:48,000 self.view, yang mewakili skrin semasa, sebagai contoh. 558 00:29:48,000 --> 00:29:53,000 Jika saya panggil bahawa kaedah viewWithTag, saya akan tarik balik butang dengan tag 0. 559 00:29:53,000 --> 00:29:58,000 Mari kita melihat ini dengan bangunan Tic Tac Toe. 560 00:29:58,000 --> 00:30:01,000 Pertama, ini adalah papan cerita saya. 561 00:30:01,000 --> 00:30:05,000 Saya telah mencipta ini 10 butang UI. 562 00:30:05,000 --> 00:30:07,000 Notis mereka semua saiz yang sama. 563 00:30:07,000 --> 00:30:11,000 Jika saya klik salah satu daripada ini dan saya kembali di sini di sebelah ini betul 564 00:30:11,000 --> 00:30:15,000 anda akan melihat saya diselaraskan font di sini, jadi saya membuat font sedikit lebih besar, 565 00:30:15,000 --> 00:30:19,000 tetapi apa yang saya juga tidak saya menetapkan tag ini. 566 00:30:19,000 --> 00:30:23,000 Saya berkata bahawa ini mempunyai tag 1, dan itulah kiri atas. 567 00:30:23,000 --> 00:30:26,000 >> Sekarang, jika saya klik butang lain, seperti satu ini kedua di sini, 568 00:30:26,000 --> 00:30:29,000 sekarang anda akan melihat bahawa tag saya ialah 2. 569 00:30:29,000 --> 00:30:32,000 Setiap butang ini hanya mempunyai tag yang unik, 570 00:30:32,000 --> 00:30:35,000 dan sebagainya ini kemudian bagaimana saya akan mula berinteraksi 571 00:30:35,000 --> 00:30:38,000 dengan aplikasi saya. 572 00:30:38,000 --> 00:30:40,000 Ini adalah semua dalam satu pandangan pengawal, 573 00:30:40,000 --> 00:30:42,000 tetapi di sini ialah apa yang kita ada. 574 00:30:42,000 --> 00:30:44,000 Kami mempunyai 3 harta di sini. 575 00:30:44,000 --> 00:30:49,000 Yang pertama dan yang terakhir akan mewakili negeri lembaga saya. 576 00:30:49,000 --> 00:30:53,000 Pada asasnya ini pertama adalah pelbagai yang mewakili mana Xs dan Os. 577 00:30:53,000 --> 00:30:57,000 Ini satu lagi di sini memberitahu kita yang seterusnya ia. 578 00:30:57,000 --> 00:31:01,000 Anda akan melihat bahawa saya juga mempunyai perkara-perkara ini di sini. 579 00:31:01,000 --> 00:31:05,000 Sebelum ini apabila kita mengisytiharkan hartanah kita memberikan mereka nama dan jenis. 580 00:31:05,000 --> 00:31:08,000 Kita juga boleh memberikan mereka beberapa maklumat tambahan di sini. 581 00:31:08,000 --> 00:31:11,000 Ini pertama berkata nonatomic, dan apa ini mengatakan 582 00:31:11,000 --> 00:31:16,000 pada dasarnya hanya satu perkara yang pernah akan cuba untuk mengakses pembolehubah ini pada satu-satu masa. 583 00:31:16,000 --> 00:31:19,000 Anda boleh melakukan aplikasi yang lebih kompleks yang multi-threaded, 584 00:31:19,000 --> 00:31:22,000 dan sebagainya kembali Gores kita mempunyai benang yang berbeza, 585 00:31:22,000 --> 00:31:25,000 dan sprites berbeza boleh melakukan perkara-perkara yang berbeza pada masa yang sama. 586 00:31:25,000 --> 00:31:29,000 >> Jika itu tidak berlaku, yang ia tidak dalam apa-apa yang kita akan melihat, 587 00:31:29,000 --> 00:31:33,000 jika kita katakan nonatomic ia sebenarnya akan membuat perkara yang sedikit lebih cepat. 588 00:31:33,000 --> 00:31:37,000 Kami juga mempunyai perkara ini dipanggil serahak, kuat atau lemah. 589 00:31:37,000 --> 00:31:40,000 Ini menetapkan hanya mengatakan bahawa ini adalah jenis standard. 590 00:31:40,000 --> 00:31:43,000 Ini bukanlah satu objek atau penunjuk kerana ini adalah hanya bool, 591 00:31:43,000 --> 00:31:46,000 begitu bool dibina ke dalam C-Objektif. 592 00:31:46,000 --> 00:31:49,000 Ini mengatakan jangan cuba untuk melakukan apa-apa yang mewah dengan petunjuk sini. 593 00:31:49,000 --> 00:31:51,000 Ia scaler tetap lama. 594 00:31:51,000 --> 00:31:54,000 Kuat dan lemah, lemah ini mengatakan yang sebenarnya 595 00:31:54,000 --> 00:31:57,000 Saya mahu ini menunjuk kepada sesuatu dalam pengawal pandangan. 596 00:31:57,000 --> 00:32:00,000 Saya tidak akan sebenarnya memperuntukkan atau Init ini diri saya. 597 00:32:00,000 --> 00:32:04,000 Pembina muka, apabila saya menjalankan aplikasi, akan untuk mengendalikan semua pengawalan bahawa. 598 00:32:04,000 --> 00:32:07,000 Jika saya katakan lemah, yang mengatakan bahawa orang lain akan mewujudkan ini. 599 00:32:07,000 --> 00:32:09,000 Jika saya katakan kuat, ini mengatakan bahawa saya akan menjadi salah satu 600 00:32:09,000 --> 00:32:12,000 itu mewujudkan objek ini lembaga, 601 00:32:12,000 --> 00:32:14,000 dan sebagainya di sini saya mempunyai beberapa lebih kaedah di sini, 602 00:32:14,000 --> 00:32:18,000 sebagai contoh, tindakan apabila butang permainan baru ditekan, 603 00:32:18,000 --> 00:32:20,000 suatu tindakan bagi apabila mana-mana butang lain ditekan, 604 00:32:20,000 --> 00:32:23,000 dan sebagainya. 605 00:32:23,000 --> 00:32:26,000 >> Kami tidak akan masuk ke dalam terlalu banyak logik daripada Tic Tac Toe, 606 00:32:26,000 --> 00:32:30,000 walaupun ia adalah sangat menarik, tetapi mari kita lihat pada 607 00:32:30,000 --> 00:32:33,000 beberapa perkara yang kita boleh lakukan di dalam IOS. 608 00:32:33,000 --> 00:32:35,000 Ini kaedah permainan baru akan akan dipecat 609 00:32:35,000 --> 00:32:37,000 apabila saya tekan butang permainan baru. 610 00:32:37,000 --> 00:32:41,000 Untuk cangkuk bahawa sehingga saya hanya datang ke papan cerita saya. 611 00:32:41,000 --> 00:32:43,000 Saya klik pada permainan baru. 612 00:32:43,000 --> 00:32:47,000 Jika saya datang ke sini ke kanan, saya dapat melihat bahawa 613 00:32:47,000 --> 00:32:50,000 Touch Up Inside berwayar kepada kaedah newGame. 614 00:32:50,000 --> 00:32:53,000 Itulah sebabnya ini akan mendapatkan dipecat. 615 00:32:53,000 --> 00:32:56,000 Kaedah newGame akan melakukan beberapa set up. 616 00:32:56,000 --> 00:32:59,000 Ia akan berkata saya mahu anda untuk membersihkan negeri lembaga. 617 00:32:59,000 --> 00:33:01,000 Ini adalah satu kaedah yang baik pada yg mungkin berubah array. 618 00:33:01,000 --> 00:33:03,000 Ini akan mengatakan ia kini giliran X, 619 00:33:03,000 --> 00:33:07,000 dan sekarang saya akan mengambil kesempatan daripada perkara ini viewWithTag. 620 00:33:07,000 --> 00:33:11,000 >> Saya tahu bahawa butang saya mempunyai tag 1-9, 621 00:33:11,000 --> 00:33:13,000 dan itulah sesuatu yang saya sewenang-wenangnya dipilih. 622 00:33:13,000 --> 00:33:15,000 Jika saya mahu untuk menetapkan teks setiap butang kosong 623 00:33:15,000 --> 00:33:17,000 kerana saya hanya memulakan permainan baru dan saya tidak mahu apa-apa 624 00:33:17,000 --> 00:33:20,000 Xs atau Os akan dibiarkan lebih yang boleh saya lakukan ini. 625 00:33:20,000 --> 00:33:24,000 Saya boleh katakan saya mahu pandangan dengan tag, 1, 2, 3, 4 et cetera. 626 00:33:24,000 --> 00:33:27,000 Ini akan tarik butang yang berbeza setiap kali. 627 00:33:27,000 --> 00:33:30,000 Di sini saya akan untuk membuang ia UIButton. 628 00:33:30,000 --> 00:33:33,000 Sama seperti kita boleh membuang ints terapung dan sebaliknya 629 00:33:33,000 --> 00:33:37,000 ini mengatakan bahawa saya mahu untuk membuang ini untuk UIButton. 630 00:33:37,000 --> 00:33:40,000 Ini bermakna jenis ini akan menjadi * UIButton 631 00:33:40,000 --> 00:33:43,000 kerana petunjuk, tetapi jangan bimbang, mereka tidak menakutkan lagi. 632 00:33:43,000 --> 00:33:47,000 >> Apabila saya mempunyai butang ini saya akan memanggil kaedah di atasnya. 633 00:33:47,000 --> 00:33:50,000 Kaedah ini dipanggil setTitle forState, dan sebagainya ini mengatakan 634 00:33:50,000 --> 00:33:53,000 Saya mahu untuk menetapkan teks butang untuk menjadi rentetan kosong, 635 00:33:53,000 --> 00:33:57,000 dan saya mahu ia menjadi rentetan kosong apabila ia tidak ditekan. 636 00:33:57,000 --> 00:34:01,000 Jika saya menggunakan kaedah ini, saya boleh menukar teks butang 637 00:34:01,000 --> 00:34:04,000 secepat seseorang menekan, tetapi kita mahu mengatakan apabila butang hanya duduk di sana 638 00:34:04,000 --> 00:34:07,000 Saya mahu teks untuk menjadi kosong. 639 00:34:07,000 --> 00:34:10,000 Akhirnya, kita pergi untuk memulakan lembaga saya, 640 00:34:10,000 --> 00:34:12,000 dan saya akan mengatakan bahawa segala-galanya kini pada 0, 641 00:34:12,000 --> 00:34:15,000 supaya lembaga ini ahli-ahli tidak berubah adalah pelbagai yg mungkin berubah, 642 00:34:15,000 --> 00:34:21,000 yang bermakna saya boleh memanggil kaedah addObject dan hanya dalam 0 ia. 643 00:34:21,000 --> 00:34:23,000 Itulah apa yang berlaku apabila saya mencipta permainan baru. 644 00:34:23,000 --> 00:34:25,000 >> Mari kita melihat satu lagi. 645 00:34:25,000 --> 00:34:28,000 Kaedah ini di sini adalah IBAction itu akan ditekan 646 00:34:28,000 --> 00:34:31,000 setiap kali salah mereka dataran ditekan. 647 00:34:31,000 --> 00:34:33,000 Sekarang kita mempunyai beberapa Tic Tac Toe logik di sini. 648 00:34:33,000 --> 00:34:36,000 Kita memikirkan yang sebaliknya ia adalah, 649 00:34:36,000 --> 00:34:39,000 dan berdasarkan itu kita sama ada menetapkan X atau O, 650 00:34:39,000 --> 00:34:43,000 tetapi kita dapati bahawa kita sedang menggunakan semula ini pengendali acara yang sama 651 00:34:43,000 --> 00:34:45,000 bagi setiap satu dari orang-orang butang. 652 00:34:45,000 --> 00:34:49,000 Ini bermakna bahawa saya tidak mempunyai kaedah untuk butang kiri atas, 653 00:34:49,000 --> 00:34:52,000 kaedah yang berbeza untuk butang kanan bawah, walaupun saya boleh berbuat demikian. 654 00:34:52,000 --> 00:34:54,000 Itu tidak akan benar-benar menjadi reka bentuk yang baik. 655 00:34:54,000 --> 00:34:57,000 Apa yang saya lakukan di sini ialah saya sebenarnya akan menentukan 656 00:34:57,000 --> 00:35:00,000 apa tag butang yang telah ditekan. 657 00:35:00,000 --> 00:35:04,000 Anda dapati bahawa kaedah ini bermain mengambil satu hujah. 658 00:35:04,000 --> 00:35:07,000 Ia dipanggil penghantar, dan apa penghantar penghantar akan 659 00:35:07,000 --> 00:35:10,000 mewakili apa yang telah diambil tindakan ke atas. 660 00:35:10,000 --> 00:35:15,000 Jika saya tekan butang, pengirim ini akan menjadi yang UIButton 661 00:35:15,000 --> 00:35:18,000 bahawa saya sebenarnya ditekan, supaya bermakna bahawa UIButton 662 00:35:18,000 --> 00:35:20,000 mempunyai tag kerana saya mencipta tag. 663 00:35:20,000 --> 00:35:23,000 >> Jika saya ingin mendapatkan di tag saya hanya boleh mengatakan 664 00:35:23,000 --> 00:35:26,000 Saya mahu tag penghantar, 665 00:35:26,000 --> 00:35:28,000 dan sekali lagi, saya hanya casted untuk UIButton. 666 00:35:28,000 --> 00:35:32,000 Saya kebetulan tahu bahawa pengirim akan UIButton. 667 00:35:32,000 --> 00:35:34,000 Ia tidak selalunya perlu untuk menjadi UIButton. 668 00:35:34,000 --> 00:35:36,000 Saya boleh, sebagai contoh, mendaftar pengendali acara yang sama 669 00:35:36,000 --> 00:35:38,000  untuk satu untuk butang, satu untuk gelangsar. 670 00:35:38,000 --> 00:35:40,000 Dalam kes ini, saya tahu mereka semua butang, jadi saya akan katakan 671 00:35:40,000 --> 00:35:43,000 Saya mahu ini menjadi butang, dan kemudian saya boleh mendapatkan tag, 672 00:35:43,000 --> 00:35:48,000 dan dari tag sekarang saya tahu di mana saya di dalam lembaga. 673 00:35:48,000 --> 00:35:51,000 Kemudian saya hanya boleh menetapkan sama ada X atau O, boleh flip giliran, 674 00:35:51,000 --> 00:35:54,000 periksa yang telah memenangi, dan sebagainya. 675 00:35:54,000 --> 00:35:59,000 >> Sebarang pertanyaan mengenai perkara ini setakat ini? 676 00:35:59,000 --> 00:36:02,000 Okay, semua kod yang kami posted talian kita tidak mahu masuk ke dalam terlalu banyak 677 00:36:02,000 --> 00:36:06,000 logik Tic Tac Toe, tetapi kini anda boleh melihat yang benar-benar 678 00:36:06,000 --> 00:36:09,000 semua yang kita lakukan adalah kita menggelung lebih array ini, 679 00:36:09,000 --> 00:36:13,000 jadi kami mempunyai beberapa untuk gelung sini, dan kami hanya membandingkan untuk melihat 680 00:36:13,000 --> 00:36:18,000 adakah kita mempunyai perlawanan dalam semua baris, perlawanan dalam lajur atau apa-apa seperti itu. 681 00:36:18,000 --> 00:36:21,000 Untuk benar-benar menjalankan aplikasi ini, jika saya ketuk pada salah satu butang ini 682 00:36:21,000 --> 00:36:24,000 bahawa kaedah bermain dipecat, supaya bermakna saya hanya menetapkan 683 00:36:24,000 --> 00:36:31,000 butang untuk menjadi X, jadi sekarang butang ini akan O, dan sebagainya, 684 00:36:31,000 --> 00:36:35,000 dan supaya bagaimana kita sedang mula untuk berinteraksi dengan aplikasi halaman ini tunggal. 685 00:36:35,000 --> 00:36:38,000 >> Kami akan hantar kod, jadi berasa bebas untuk meneliti bahawa, 686 00:36:38,000 --> 00:36:43,000 tetapi mari kita kini bercakap tentang beberapa aplikasi yang lebih daripada sekadar satu halaman. 687 00:36:43,000 --> 00:36:47,000 Seperti yang menarik sebagai Tic Tac Toe, banyak aplikasi dalam IOS 688 00:36:47,000 --> 00:36:50,000 adalah jenis gerudi ini ke bawah perkara dengan skrin berganda. 689 00:36:50,000 --> 00:36:54,000 Konsep pertama yang kita akan perlu untuk bercakap tentang protokol, 690 00:36:54,000 --> 00:36:57,000 dan protokol adalah hanya satu set kaedah 691 00:36:57,000 --> 00:36:59,000 bahawa anda boleh berjanji untuk menentukan. 692 00:36:59,000 --> 00:37:02,000 Jika saya membuat ini protokol baru dengan 2 kaedah, yang satu ini pertama, 693 00:37:02,000 --> 00:37:05,000 jika jenis pulangan adalah tidak sah, saya memanggilnya foo. 694 00:37:05,000 --> 00:37:07,000 Ia tidak mengambil hujah. Saya mempunyai kaedah lain. 695 00:37:07,000 --> 00:37:11,000 Ia akan kembali int. Saya memanggilnya bar, dan ia mengambil satu hujah. 696 00:37:11,000 --> 00:37:14,000 Semua protokol ini yang dipanggil SomeProtocol di sini, 697 00:37:14,000 --> 00:37:19,000 ini adalah satu set perkara yang seseorang boleh melaksanakan. 698 00:37:19,000 --> 00:37:22,000 Saya telah tidak di dalam protokol ini berkata apa foo tidak. 699 00:37:22,000 --> 00:37:26,000 Sebaliknya, saya hanya mengatakan anda boleh menentukan foo jika anda mahu. 700 00:37:26,000 --> 00:37:30,000 Jika saya mewujudkan pengawal pandangan atau mewujudkan kelas 701 00:37:30,000 --> 00:37:33,000 Saya boleh di dalam janji kelas untuk melaksanakan 702 00:37:33,000 --> 00:37:40,000 beberapa kaedah ini, jadi sebagai contoh, jika mengatakan 703 00:37:40,000 --> 00:37:43,000 ini sekarang mengatakan saya membuat janji kepada anda bahawa di dalam 704 00:37:43,000 --> 00:37:50,000 ini kelas pengawal pandangan saya akan mempunyai definisi bagi kedua-dua foo dan bar. 705 00:37:50,000 --> 00:37:52,000 >> Mengapa yang berguna? 706 00:37:52,000 --> 00:37:55,000 Banyak komponen di dalam IOS mengambil kesempatan ini 707 00:37:55,000 --> 00:37:58,000 corak reka bentuk yang dipanggil delegasi, dan apa delegasi mengatakan 708 00:37:58,000 --> 00:38:01,000 yang, sebagai contoh, jika saya mempunyai kotak teks 709 00:38:01,000 --> 00:38:04,000 dan terdapat beberapa peristiwa yang boleh didaftarkan di dalam kotak teks saya, 710 00:38:04,000 --> 00:38:07,000 bukannya mewujudkan peristiwa berasingan apa yang saya boleh lakukan yang boleh saya katakan 711 00:38:07,000 --> 00:38:10,000 mewakilkan kotak teks ini akan menjadi objek beberapa. 712 00:38:10,000 --> 00:38:13,000 Apabila saya mengatakan bahawa ini adalah perwakilan sekarang ini bermakna bahawa 713 00:38:13,000 --> 00:38:16,000 apabila beberapa acara telah dipecat dalam kotak teks 714 00:38:16,000 --> 00:38:18,000 bukannya perlu mendaftar atau apa-apa seperti itu 715 00:38:18,000 --> 00:38:21,000 ia hanya akan memanggil kaedah pada perwakilan. 716 00:38:21,000 --> 00:38:24,000 Sebagai contoh, di dalam kotak teks saya, saya mempunyai kaedah untuk apabila saya menekan 717 00:38:24,000 --> 00:38:27,000 yang dilakukan butang di sebelah kanan bawah, 718 00:38:27,000 --> 00:38:30,000 dan sebagainya dan bukannya mendaftar pengendali acara apa yang saya boleh katakan 719 00:38:30,000 --> 00:38:34,000 kotak teks, di sini adalah satu objek yang saya mahu anda untuk memanggil kaedah 720 00:38:34,000 --> 00:38:37,000 setiap kali seseorang menekan butang yang dilakukan, 721 00:38:37,000 --> 00:38:40,000 dan itu bererti bahawa objek yang mempunyai untuk melaksanakan beberapa protokol 722 00:38:40,000 --> 00:38:45,000 yang mengatakan bahawa saya berjanji untuk menentukan bahawa butang tindakan yang dilakukan, 723 00:38:45,000 --> 00:38:47,000 kerana jika ia tidak mentakrifkan kaedah itu dan anda tekan Selesai, 724 00:38:47,000 --> 00:38:49,000 maka ia akan menjadi mengelirukan. 725 00:38:49,000 --> 00:38:55,000 >> Mari kita lihat pada contoh. 726 00:38:55,000 --> 00:38:58,000 Di sini saya hanya mempunyai satu kotak teks, 727 00:38:58,000 --> 00:39:04,000 dan salah satu sifat kotak teks ini di sini di sebelah ini betul adalah perwakilan. 728 00:39:04,000 --> 00:39:06,000 Ini adalah harta tanah kelas. 729 00:39:06,000 --> 00:39:09,000 Apa yang saya lakukan di sini adalah saya mengawal diklik, dan saya diheret dari tempat ini di sini 730 00:39:09,000 --> 00:39:13,000 pengawal pandangan, dan yang mengatakan kini mewakilkan kotak teks ini 731 00:39:13,000 --> 00:39:18,000 akan menjadi pengawal pandangan. 732 00:39:18,000 --> 00:39:20,000 Ini bermakna bahawa apabila beberapa tindakan berlaku, dan bukannya mendaftar 733 00:39:20,000 --> 00:39:25,000 pengendali acara berasingan saya mahu anda untuk menghantar mereka untuk mewakilkan. 734 00:39:25,000 --> 00:39:28,000 Sekarang mari kita lihat pada pengawal pandangan saya. 735 00:39:28,000 --> 00:39:32,000 Dalam fail h Saya telah membuat janji. 736 00:39:32,000 --> 00:39:36,000 Saya telah berjanji untuk melaksanakan beberapa kaedah di dalam protokol ini 737 00:39:36,000 --> 00:39:38,000 dipanggil UITextFieldDelegate, dan sekali lagi, 738 00:39:38,000 --> 00:39:42,000 ini adalah hanya beberapa senarai beberapa perkara yang saya boleh memilih untuk melaksanakan. 739 00:39:42,000 --> 00:39:46,000 >> Jika saya datang ke sini dalam fail saya. M, saya telah melaksanakan satu kaedah itu. 740 00:39:46,000 --> 00:39:49,000 Saya telah dipanggil ia textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 kerana itulah apa yang ia dipanggil dalam protokol. 742 00:39:52,000 --> 00:39:57,000 Dan sekarang apabila saya menekan butang dalam dilakukan medan teks yang 743 00:39:57,000 --> 00:40:00,000 ini adalah apa yang berlaku untuk mendapatkan dipanggil, jadi saya tidak mendaftarkan sebuah pengendali acara. 744 00:40:00,000 --> 00:40:03,000 Saya disambungkan perwakilan, dan apabila acara ini dipecat 745 00:40:03,000 --> 00:40:08,000 ini adalah kaedah yang akan mendapat dipanggil, jadi jika saya datang ke sini untuk storyboard saya dan jalankan ia- 746 00:40:08,000 --> 00:40:11,000 manakala yang memuatkan kita boleh lihat apa yang ini tidak. 747 00:40:11,000 --> 00:40:13,000 Pada skrin saya Saya mempunyai 2 perkara. 748 00:40:13,000 --> 00:40:16,000 Saya mempunyai medan teks ini, dan saya mempunyai label ini. 749 00:40:16,000 --> 00:40:19,000 Saya hanya mengatakan saya mahu teks label ini 750 00:40:19,000 --> 00:40:23,000 untuk menjadi sama dengan apa yang pengguna ditaip dalam medan teks. 751 00:40:23,000 --> 00:40:26,000 Ini sejajar seterusnya di sini adalah hanya satu kaedah yang saya memanggil 752 00:40:26,000 --> 00:40:29,000 pada medan teks mengatakan saya mahu anda untuk menyembunyikan keyboard. 753 00:40:29,000 --> 00:40:33,000 Ini hanya kaedah sewenang-wenangnya bahawa Apple telah memilih. 754 00:40:33,000 --> 00:40:38,000 >> Sekali lagi, sebelum saya melakukan apa-apa saya terpaksa wayar segala-galanya, jadi saya pertama kali datang ke sini. 755 00:40:38,000 --> 00:40:42,000 Dari pengawal pandangan saya seret ke atas kotak teks. 756 00:40:42,000 --> 00:40:46,000 Saya lepaskan, dan saya boleh lihat di sini bahawa saya boleh membuat ini harta medan teks 757 00:40:46,000 --> 00:40:49,000 sejak di sini dalam pengawal pandangan saya telah ditakrifkan harta 758 00:40:49,000 --> 00:40:52,000 yang satu IBOutlet medan teks. 759 00:40:52,000 --> 00:40:55,000 Ini mengatakan bahawa saya boleh wayar harta tanah ini sehingga 760 00:40:55,000 --> 00:40:59,000 ke medan teks dalam UI saya. 761 00:40:59,000 --> 00:41:03,000 Sekarang apabila saya klik ini saya boleh mula menaip. 762 00:41:03,000 --> 00:41:06,000 Sekarang, jika saya klik butang yang dilakukan ini akan api 763 00:41:06,000 --> 00:41:08,000 acara bahawa saya kini boleh bertindak balas terhadap. 764 00:41:08,000 --> 00:41:10,000 No event pengendali. 765 00:41:10,000 --> 00:41:13,000 Itulah bagaimana saya hanya menyahut butang yang dilakukan. 766 00:41:13,000 --> 00:41:15,000 Masuk akal? 767 00:41:15,000 --> 00:41:20,000 >> Ini bukan satu corak reka bentuk yang anda mungkin tidak pernah mendapati diri anda 768 00:41:20,000 --> 00:41:23,000 mewujudkan protokol anda sendiri, tetapi hanya tahu bahawa beberapa 769 00:41:23,000 --> 00:41:27,000 IOS komponen yang berlainan mendaftar peristiwa dalam cara yang berbeza. 770 00:41:27,000 --> 00:41:29,000 Butang, sebagai contoh, menggunakan mereka IBActions. 771 00:41:29,000 --> 00:41:32,000 Medan teks, di sisi lain, akan menggunakan perwakilan. 772 00:41:32,000 --> 00:41:36,000 Kita boleh lihat dan anda boleh melihat semua dalam yang up dokumentasi. 773 00:41:36,000 --> 00:41:41,000 By the way, ada sebenarnya satu tan barangan UI dibina ke dalam IOS untuk anda, 774 00:41:41,000 --> 00:41:46,000 demikian bagi contoh, cara saya dibuat yang dikatakan dilakukan di sebelah kanan bawah 775 00:41:46,000 --> 00:41:48,000 saya memilih bidang ini teks. 776 00:41:48,000 --> 00:41:50,000 Saya datang ke sini. 777 00:41:50,000 --> 00:41:53,000 Saya menatal ke bawah sedikit untuk kembali kunci, 778 00:41:53,000 --> 00:41:56,000 dan saya benar-benar boleh membuat ini sekumpulan keseluruhan perkara, seperti jika saya mahu bahawa untuk mengatakan 779 00:41:56,000 --> 00:42:00,000 kecemasan memanggil sebaliknya saya boleh berbuat demikian, yang benar-benar rawak, 780 00:42:00,000 --> 00:42:02,000 dan saya tidak tahu mengapa ada panggilan kecemasan butang terbina dalam, 781 00:42:02,000 --> 00:42:06,000 tetapi di sana, ia berkata panggilan kecemasan dalam huruf benar-benar kecil. 782 00:42:06,000 --> 00:42:08,000 Terdapat anda pergi. 783 00:42:08,000 --> 00:42:12,000 >> Pasti menerokai semua pilihan-pilihan yang berbeza dalam IOS. 784 00:42:12,000 --> 00:42:14,000 Sebarang pertanyaan pada perwakilan? 785 00:42:14,000 --> 00:42:18,000 Sekali lagi, hanya corak reka bentuk yang menarik yang anda harus sedar. 786 00:42:18,000 --> 00:42:22,000 Baiklah, mari kita seterusnya, lihat pemandangan meja. 787 00:42:22,000 --> 00:42:26,000 Satu paparan jadual pada asasnya bahawa senarai barangan yang adalah seluruh tempat dalam IOS. 788 00:42:26,000 --> 00:42:29,000 Apabila anda Melibas melalui semua kenalan anda, anda sedang melihat 789 00:42:29,000 --> 00:42:34,000 halaman menetapkan, dan yang jenis senarai perkara dipanggil pandangan jadual. 790 00:42:34,000 --> 00:42:37,000 Melaksanakan paparan jadual di IOS adalah agak mudah. 791 00:42:37,000 --> 00:42:41,000 Sebaliknya membuat kelas yang turun dari yang UIViewController 792 00:42:41,000 --> 00:42:44,000 seperti yang kita telah dilakukan sebelum kita hanya perlu untuk mengatakan bukannya 793 00:42:44,000 --> 00:42:46,000 segala UIViewController tidak saya mahu lakukan, 794 00:42:46,000 --> 00:42:50,000 Saya katakan segala UITableViewController adakah saya mahu lakukan, 795 00:42:50,000 --> 00:42:54,000 supaya hanya menambah beberapa perkara tambahan yang benar-benar dilakukan untuk kita. 796 00:42:54,000 --> 00:42:58,000 Yang perlu kita lakukan sangat sedikit pada dasarnya mengisi tempat kosong dalam jadual. 797 00:42:58,000 --> 00:43:02,000 >> Dalam usaha untuk memaparkan jadual yang saya perlukan untuk menjawab beberapa soalan. 798 00:43:02,000 --> 00:43:06,000 Soalan pertama yang saya perlukan untuk menjawab ialah berapa banyak bahagian dalam jadual? 799 00:43:06,000 --> 00:43:08,000 Apabila anda Melibas melalui aplikasi kenalan anda, anda akan melihat bahawa ia adalah jenis 800 00:43:08,000 --> 00:43:12,000 dianjurkan oleh Seperti, maka anda mempunyai Bs, dan anda mempunyai bahawa header sub sedikit. 801 00:43:12,000 --> 00:43:14,000 Setiap daripada mereka dipanggil seksyen. 802 00:43:14,000 --> 00:43:16,000 Anda mungkin atau tidak mungkin perlu ini. 803 00:43:16,000 --> 00:43:19,000 Perkara pertama yang anda perlu lakukan adalah melaksanakan kaedah 804 00:43:19,000 --> 00:43:22,000 dipanggil tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Yang hanya kembali berapa banyak bahagian yang anda mempunyai, 806 00:43:25,000 --> 00:43:29,000 jadi ini boleh mengatakan kembali satu jika anda mempunyai satu jadual pandangan yang besar. 807 00:43:29,000 --> 00:43:33,000 Persoalan seterusnya yang IOS perlu tahu berapa banyak baris adakah anda mempunyai? 808 00:43:33,000 --> 00:43:36,000 Sebagai contoh, anda Melibas melalui paparan jadual. 809 00:43:36,000 --> 00:43:39,000 Anda mempunyai beberapa lagu-lagu yang tetap anda melihat atau nombor tetap kenalan. 810 00:43:39,000 --> 00:43:41,000 Jika anda saya, sudah tentu, tidak begitu banyak, 811 00:43:41,000 --> 00:43:44,000 dan supaya bagaimana IOS tahu berapa banyak sel-sel untuk memaparkan. 812 00:43:44,000 --> 00:43:46,000 >> Sekali lagi, ini boleh mengatakan sesuatu seperti 3 pulangan. 813 00:43:46,000 --> 00:43:49,000 Paparan jadual saya mempunyai 3 baris. 814 00:43:49,000 --> 00:43:52,000 Akhirnya, IOS perlu tahu apa yang setiap sel kelihatan seperti, 815 00:43:52,000 --> 00:43:54,000 jadi apa yang ia sebenarnya akan lakukan ialah memanggil kaedah ini turun sini, 816 00:43:54,000 --> 00:43:57,000 ini tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Ia akan memanggil kaedah ini pada setiap sel tunggal di dalam jadual anda. 818 00:44:01,000 --> 00:44:03,000 Bagaimana ia tahu berapa kali untuk memanggil ia? 819 00:44:03,000 --> 00:44:06,000 Nah, anda memberitahu ia di dalam bilangan baris dalam seksyen. 820 00:44:06,000 --> 00:44:08,000 Kami akan memanggil ini pada setiap sel-sel kita, 821 00:44:08,000 --> 00:44:11,000 dan di dalam ini adalah di mana anda sebenarnya boleh melakukan perkara-perkara seperti 822 00:44:11,000 --> 00:44:16,000 menetapkan teks atau memberitahu anda apa yang sedikit butang biru di sebelah kanan tidak. 823 00:44:16,000 --> 00:44:19,000 Corak untuk mendapatkan sel-sel ini, kita akan menggunakan kaedah ini 824 00:44:19,000 --> 00:44:22,000 dipanggil dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objektif-C adalah sebenarnya sangat terkenal untuk panjang nama kaedah mereka yang tidak masuk akal, 826 00:44:29,000 --> 00:44:32,000 dan ini adalah benar-benar kes baik dalam contoh titik. 827 00:44:32,000 --> 00:44:37,000 Apa kaedah ini tidak adalah ini hanya mengatakan saya mahu anda memberi saya sel. 828 00:44:37,000 --> 00:44:39,000 Hanya satu perkara yang IOS. 829 00:44:39,000 --> 00:44:41,000 Jika anda mempunyai sesuatu seperti 100.000 lagu pada iPod anda 830 00:44:41,000 --> 00:44:45,000 apa yang IOS tidak mahu lakukan ialah memperuntukkan 100.000 sel-sel, 831 00:44:45,000 --> 00:44:48,000 kerana jika anda berada di bahagian atas senarai anda, adakah anda benar-benar perlu untuk memperuntukkan memori 832 00:44:48,000 --> 00:44:51,000 untuk sel itulah 99.000 baris ke bawah? 833 00:44:51,000 --> 00:44:55,000 Tidak, kerana seperti yang anda menatal anda boleh jenis memperuntukkan seperti yang anda pergi bersama-sama. 834 00:44:55,000 --> 00:44:57,000 Ini dilakukan untuk anda. 835 00:44:57,000 --> 00:44:59,000 Anda tidak perlu bimbang tentang semua barangan prestasi yang bodoh. 836 00:44:59,000 --> 00:45:02,000 Apa yang anda katakan anda memanggil kaedah ini dequeueReusableCellWithIdentifier, 837 00:45:02,000 --> 00:45:06,000 dan ini berkata, okay, jika anda perlu untuk saya akan mewujudkan sel yang baru untuk anda. 838 00:45:06,000 --> 00:45:09,000 >> Tetapi jika anda berada di bawah meja dan anda sudah diperuntukkan sesetengah sel 839 00:45:09,000 --> 00:45:12,000 di atas meja yang anda benar-benar tidak akan memerlukan bila-bila masa tidak lama lagi 840 00:45:12,000 --> 00:45:15,000 Saya akan memberi anda salah satu daripada mereka kembali bukannya memperuntukkan satu yang baru, 841 00:45:15,000 --> 00:45:17,000 dan sebagainya ini adalah satu kebimbangan prestasi bagus. 842 00:45:17,000 --> 00:45:21,000 Anda tidak perlu untuk memperuntukkan sel-sel sendiri. 843 00:45:21,000 --> 00:45:23,000 Itu akan memberi anda kembali sel. 844 00:45:23,000 --> 00:45:25,000 Ia akan kembali kepada anda objek bimbit. 845 00:45:25,000 --> 00:45:28,000 Sebaik sahaja anda mempunyai objek sel anda boleh melakukan barangan. 846 00:45:28,000 --> 00:45:32,000 Anda boleh menetapkan teks sel dengan harta ini dipanggil teks label. 847 00:45:32,000 --> 00:45:36,000 Anda boleh menambah bahawa anak panah di sebelah kanan atau beberapa perkara lain yang rawak 848 00:45:36,000 --> 00:45:41,000 dengan harta ini selain dipanggil accessoryType, dan sebagainya dan sebagainya. 849 00:45:41,000 --> 00:45:46,000 >> Mari kita melihat sebenarnya melaksanakan paparan jadual sekarang. 850 00:45:46,000 --> 00:45:49,000 Apabila saya mencipta projek ini 851 00:45:49,000 --> 00:45:53,000 bukannya mengatakan permohonan pandangan tunggal saya sebenarnya datang ke sini 852 00:45:53,000 --> 00:45:57,000 permohonan tuan-detail, dan sebagainya pada dasarnya ini sepadan dengan aplikasi mel 853 00:45:57,000 --> 00:46:01,000 pada iPad dengan paparan jadual di sebelah kiri dan kemudian kandungan di sebelah kanan. 854 00:46:01,000 --> 00:46:07,000 Pada iPod atau iPhone ini akan sesuai untuk paparan jadual tunggal. 855 00:46:07,000 --> 00:46:10,000 Itulah di mana saya mendapat kod permulaan saya. 856 00:46:10,000 --> 00:46:13,000 >> Mari kita mula-mula mengambil melihat papan cerita. 857 00:46:13,000 --> 00:46:15,000 Semua ini telah dilakukan bagi saya, pada dasarnya diwujudkan. 858 00:46:15,000 --> 00:46:18,000 Ini bar navigasi menunjukkan kepada saya apa contoh sel boleh kelihatan seperti, 859 00:46:18,000 --> 00:46:22,000 dan saya dua kali ganda boleh klik ini, menukar tajuk. 860 00:46:22,000 --> 00:46:25,000 Sebarang kemusykilan UI lain saya boleh mengendalikan di sana. 861 00:46:25,000 --> 00:46:27,000 Fail pengepala kelihatan benar-benar mudah. 862 00:46:27,000 --> 00:46:30,000 Bukannya mengatakan ini adalah UIViewController kita sedang mengatakan ini adalah satu 863 00:46:30,000 --> 00:46:35,000 TableViewController, jadi kita tahu bahawa kita mahu untuk memanggil semua orang-orang kaedah jadual. 864 00:46:35,000 --> 00:46:38,000 Seterusnya saya ingin untuk mencipta harta yang akan mewakili 865 00:46:38,000 --> 00:46:40,000 perkara di dalam jadual saya. 866 00:46:40,000 --> 00:46:43,000 Jadual ini akan sewenang-wenangnya memaparkan 867 00:46:43,000 --> 00:46:46,000 senarai buah-buahan, dan jadi saya perlu untuk mewujudkan beberapa pelbagai 868 00:46:46,000 --> 00:46:49,000 di mana saya boleh memasukkan buah-buahan. 869 00:46:49,000 --> 00:46:52,000 Dalam fail pelaksanaan saya perkara pertama yang saya mahu lakukan 870 00:46:52,000 --> 00:46:55,000 ialah saya mahu memastikan saya memulakan array ini. 871 00:46:55,000 --> 00:46:58,000 >> Saya berkata alloc INIT, mencipta pelbagai buah-buahan saya, 872 00:46:58,000 --> 00:47:03,000 dan saya menambah 4 perkara, salah satu yang lebih kontroversi daripada 3 yang lain. 873 00:47:03,000 --> 00:47:06,000 Dan kini saya mempunyai pelbagai saiz 4. 874 00:47:06,000 --> 00:47:08,000 Kami berjabat ia di CS50. 875 00:47:08,000 --> 00:47:11,000 Saya kini mempunyai pelbagai saiz 4. 876 00:47:11,000 --> 00:47:13,000 Sekarang saya akan mula menjawab soalan-soalan ini, dan sebenarnya, 877 00:47:13,000 --> 00:47:16,000 apabila saya mencipta aplikasi ini semua ini telah dilakukan bagi saya. 878 00:47:16,000 --> 00:47:19,000 Saya tidak mempunyai untuk menaip beberapa seksyen dalam paparan jadual. 879 00:47:19,000 --> 00:47:22,000 Ia sudah ada, dan saya mengisi tempat kosong. 880 00:47:22,000 --> 00:47:24,000 Berapa bab yang saya miliki? 881 00:47:24,000 --> 00:47:26,000 Satu. Semua dilakukan. 882 00:47:26,000 --> 00:47:28,000 Berapa banyak baris yang saya miliki? 883 00:47:28,000 --> 00:47:31,000 Well, saya mempunyai satu baris bagi setiap buah-buahan, supaya kiraan ini 884 00:47:31,000 --> 00:47:34,000 adalah harta pelbagai mana-mana yang mengatakan bagaimana besar adalah ia? 885 00:47:34,000 --> 00:47:36,000 Itulah berapa banyak baris saya mempunyai. 886 00:47:36,000 --> 00:47:42,000 Akhir sekali, saya perlu mengatakan apakah setiap sel kelihatan seperti? 887 00:47:42,000 --> 00:47:46,000 Saya akan untuk mengatakan dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Sekali lagi, ini telah ditulis untuk saya. 889 00:47:48,000 --> 00:47:51,000 Saya tidak perlu melakukan ini diri saya sendiri, dan saya ingin mendapatkan kembali 890 00:47:51,000 --> 00:47:54,000 sel ini di lokasi ini. 891 00:47:54,000 --> 00:47:57,000 Ingatlah bahawa kita sedang memanggil kaedah ini sama pada setiap sel tunggal, 892 00:47:57,000 --> 00:48:01,000 dan ini hujah di sini, hujah ini indexPath, 893 00:48:01,000 --> 00:48:03,000 mengatakan apa yang berturut-turut saya masuk 894 00:48:03,000 --> 00:48:05,000 Jika saya katakan indexPath.row ke sini 895 00:48:05,000 --> 00:48:09,000 ini akan menjadi 0, maka ia akan menjadi 1, maka ia akan menjadi 2, dan ini adalah supaya saya tahu 896 00:48:09,000 --> 00:48:11,000 apa sel Saya kini memaparkan. 897 00:48:11,000 --> 00:48:15,000 Saya mahu untuk menetapkan teks sel menggunakan harta textLabel 898 00:48:15,000 --> 00:48:19,000 untuk pergi ke dalam pelbagai buah-buahan saya dan mendapatkan 899 00:48:19,000 --> 00:48:21,000 objek yang sepadan untuk setiap baris. 900 00:48:21,000 --> 00:48:24,000 Jika ini adalah rentetan, saya kini menetapkan 901 00:48:24,000 --> 00:48:28,000 harta teks kepada rentetan. 902 00:48:28,000 --> 00:48:30,000 Saya boleh melakukan satu perkara lain. 903 00:48:30,000 --> 00:48:32,000 Saya juga boleh mendaftarkan suatu pengendali acara pada setiap sel-sel, 904 00:48:32,000 --> 00:48:35,000 jadi apabila saya ketuk setiap sel-sel 905 00:48:35,000 --> 00:48:39,000 ini didSelectRowAtIndexPath, ini akan dipanggil bagi saya, 906 00:48:39,000 --> 00:48:42,000 demikian hanya dengan menentukan ini, saya kini boleh mengendalikan apa yang berlaku 907 00:48:42,000 --> 00:48:46,000 apabila anda mengetuk sel, dan sekali lagi, kita lulus di mana sel telah ditoreh 908 00:48:46,000 --> 00:48:50,000 supaya kita boleh menggunakan semula ini pengendali acara yang sama untuk semua sel-sel kita. 909 00:48:50,000 --> 00:48:53,000 >> Sekali lagi, ini adalah sesuatu IOS lakukan untuk saya. 910 00:48:53,000 --> 00:48:55,000 Mari kita memaparkan popup menjengkelkan lain 911 00:48:55,000 --> 00:48:59,000 yang hanya mengatakan anda memilih sesuatu yang mana sesuatu yang 912 00:48:59,000 --> 00:49:04,000 akan menjadi objek baris. 913 00:49:04,000 --> 00:49:10,000 Apabila saya menjalankan ini, saya akan mempunyai pandangan ini jadual bagus 914 00:49:10,000 --> 00:49:14,000 dengan satu baris untuk setiap buah-buahan ini, dan jika saya ketik salah 915 00:49:14,000 --> 00:49:16,000 ia memberitahu saya apa yang berlaku. 916 00:49:16,000 --> 00:49:21,000 Masuk akal? 917 00:49:21,000 --> 00:49:24,000 Mari kita membina sedikit lebih kompleks app, 918 00:49:24,000 --> 00:49:28,000 seberapa banyak klik anda memilih tomato. 919 00:49:28,000 --> 00:49:31,000 Bahagian baik tentang Lakaran papan cerita yang 920 00:49:31,000 --> 00:49:35,000 ia bukan sahaja akan membantu kita skrin reka bentuk individu, 921 00:49:35,000 --> 00:49:38,000 ia juga akan membantu kita mengikat bersama-sama aplikasi keseluruhan kami, 922 00:49:38,000 --> 00:49:42,000 jadi aplikasi yang terakhir kita akan bangunan ini sukan baik pembaca berita, 923 00:49:42,000 --> 00:49:45,000 dan sebagainya ia akan mempunyai skrin berganda, dan jadi saya sebenarnya boleh mewakili 924 00:49:45,000 --> 00:49:48,000 setiap skrin berganda di papan cerita, 925 00:49:48,000 --> 00:49:52,000 dan saya boleh mengezum keluar dan melihat aplikasi saya dari tahap yang tinggi. 926 00:49:52,000 --> 00:49:55,000 >> Dalam usaha untuk mewujudkan dalam elemen baru papan cerita saya 927 00:49:55,000 --> 00:49:59,000 ia adalah benar-benar mudah di dalam Pembina Interface. 928 00:49:59,000 --> 00:50:01,000 Jika saya ingin menambah satu lagi skrin ini, sebagai contoh, 929 00:50:01,000 --> 00:50:06,000 Saya mula-mula boleh mengezum keluar dengan zum secubit bahawa Apple suka begitu banyak, 930 00:50:06,000 --> 00:50:09,000 dan turun di sini sebelum saya mencari butang 931 00:50:09,000 --> 00:50:12,000 dan saya seret dan lepaskan butang 932 00:50:12,000 --> 00:50:15,000 jika saya ingin membuat skrin baru saya sebenarnya boleh hanya seret dan lepaskan 933 00:50:15,000 --> 00:50:19,000 pengawal pandangan keseluruhan, jadi jika saya memilih ini, tarik ia ke sini, 934 00:50:19,000 --> 00:50:23,000 hey, ada skrin yang lain, dan sebagainya kini menggunakan fail ini storyboard yang sama 935 00:50:23,000 --> 00:50:26,000 Saya boleh mempunyai semua skrin di dalam app saya, dan saya boleh zum keluar 936 00:50:26,000 --> 00:50:28,000 dan melihat bagaimana mereka berinteraksi. 937 00:50:28,000 --> 00:50:32,000 Ini tidak akan berinteraksi lagi. 938 00:50:32,000 --> 00:50:36,000 Cara di mana ini 2 skrin berinteraksi anda mentakrifkan hubungan. 939 00:50:36,000 --> 00:50:39,000 Anda pada asasnya boleh mengatakan skrin ini, apabila anda menekan butang ini, 940 00:50:39,000 --> 00:50:42,000 Saya mahu anda untuk slaid ke skrin baru ini. 941 00:50:42,000 --> 00:50:44,000 Ini bermakna terdapat jenis ini hubungan antara 942 00:50:44,000 --> 00:50:46,000  skrin pertama dan skrin kedua. 943 00:50:46,000 --> 00:50:49,000 Anda akan mempunyai asasnya merupakan anak panah dari butang itu ke skrin kedua 944 00:50:49,000 --> 00:50:53,000 mengatakan bahawa apabila anda menekan butang ini yang mana saya mahu pergi. 945 00:50:53,000 --> 00:50:57,000 Sama seperti kita kawalan diklik dan diseret untuk menentukan cawangan mereka 946 00:50:57,000 --> 00:51:01,000 kita akan melakukan perkara yang sama untuk menentukan segues ini. 947 00:51:01,000 --> 00:51:05,000 >> Kami akan melihat contoh untuk itu, dan sebelum kita sebenarnya peralihan 948 00:51:05,000 --> 00:51:08,000 dari satu skrin ke satu IOS adalah baik cukup untuk memanggil kaedah ini 949 00:51:08,000 --> 00:51:11,000 dipanggil prepareForSegue, dan ini adalah di mana kita boleh bermula 950 00:51:11,000 --> 00:51:14,000 menghantar data dari satu aplikasi yang lain. 951 00:51:14,000 --> 00:51:17,000 Dalam contoh ini kita berada kira-kira untuk melihat ia pada dasarnya akan membolehkan kita 952 00:51:17,000 --> 00:51:20,000 untuk menapis pasukan besbol oleh liga dan bahagian. 953 00:51:20,000 --> 00:51:23,000 Apabila saya memilih liga, sebagai contoh, saya mahu peralihan 954 00:51:23,000 --> 00:51:25,000 ke skrin seterusnya saya di mana saya boleh memaparkan semua bahagian 955 00:51:25,000 --> 00:51:27,000 dalam liga itu atau semua pasukan yang berbeza. 956 00:51:27,000 --> 00:51:31,000 Saya perlu untuk menghantar ke skrin bahawa pasukan apa yang anda harus memaparkan. 957 00:51:31,000 --> 00:51:35,000 Untuk melakukan bahawa saya akan mengambil kesempatan kaedah ini di sini. 958 00:51:35,000 --> 00:51:39,000 >> Akhirnya, hanya satu titik rawak pada IOS. 959 00:51:39,000 --> 00:51:41,000 Jika anda mahu menyimpan data ada perkara ini dipanggil data teras, 960 00:51:41,000 --> 00:51:44,000 yang sebenarnya adalah jenis rumit untuk bekerja dengan. 961 00:51:44,000 --> 00:51:47,000 Anda juga boleh menggunakan SQL untuk menyimpan data, 962 00:51:47,000 --> 00:51:51,000 yang, sekali lagi, adalah baik tetapi jenis pada sebelah lebih rumit untuk bekerja dengan, 963 00:51:51,000 --> 00:51:55,000 tetapi IOS juga menyokong perkara-perkara yang benar-benar sejuk dipanggil senarai harta, 964 00:51:55,000 --> 00:52:00,000 dan senarai hartanah adalah hanya fail yang mewakili pasangan nilai utama. 965 00:52:00,000 --> 00:52:03,000 Anda menentukan senarai kunci, dan anda mengatakan kunci ini akan menjadi array. 966 00:52:03,000 --> 00:52:06,000 Kekunci ini akan menjadi rentetan, dan pada dasarnya apa-apa yang boleh anda lakukan 967 00:52:06,000 --> 00:52:10,000 di JSON anda boleh lakukan di dalam senarai harta, 968 00:52:10,000 --> 00:52:14,000 dan sebagainya ini benar-benar baik membolehkan kita untuk bekerja dengan beberapa data. 969 00:52:14,000 --> 00:52:18,000 Sebagai contoh, saya mempunyai ini Teams.plist yang saya buat. 970 00:52:18,000 --> 00:52:22,000 Saya telah mencipta fail plist baru, dan saya boleh mengesan. 971 00:52:22,000 --> 00:52:26,000 Ini adalah kamus, ini adalah kamus, ini adalah rentetan, 972 00:52:26,000 --> 00:52:30,000 dan sebagainya ini adalah perwakilan bagus grafik dokumen JSON 973 00:52:30,000 --> 00:52:33,000 atau hanya satu set pasangan nilai utama, 974 00:52:33,000 --> 00:52:37,000 dan sebagainya ini adalah data yang saya akan bekerja dengan dalam aplikasi saya. 975 00:52:37,000 --> 00:52:40,000 >> Mari kita mula-mula datang ke sini. Kami mempunyai banyak fail sekarang. 976 00:52:40,000 --> 00:52:44,000 Tetapi mari kita mula-mula datang ke sini untuk papan cerita. 977 00:52:44,000 --> 00:52:48,000 Storyboard sini jika saya boleh mengezum keluar- 978 00:52:48,000 --> 00:52:51,000 kita kini boleh melihat bahawa ini adalah aliran aplikasi saya. 979 00:52:51,000 --> 00:52:53,000 Saya pertama kali akan bermula pada skrin ini. 980 00:52:53,000 --> 00:52:55,000 Saya akan untuk menggerudi ke skrin ini, 981 00:52:55,000 --> 00:52:58,000 dan saya akan untuk menggerudi ke skrin ini, dan kita boleh lihat di sini bahawa jika saya jenis 982 00:52:58,000 --> 00:53:04,000 menggerakkan satu ini di sekeliling kita telah panah ini pergi dari sini ke sini, 983 00:53:04,000 --> 00:53:08,000 dan cara saya menentukan arrow bahawa jika saya mengezum masuk sedikit, 984 00:53:08,000 --> 00:53:12,000 dan jika saya datang ke pengawal pandangan ini, 985 00:53:12,000 --> 00:53:16,000 dan di sini adalah sel, dan saya ingin mengatakan bahawa apabila anda mengetuk sel 986 00:53:16,000 --> 00:53:18,000 Saya mahu anda untuk slaid ke skrin yang lain. 987 00:53:18,000 --> 00:53:21,000 Saya hanya boleh tahan kawalan, 988 00:53:21,000 --> 00:53:26,000 tatal atas sedikit, tahan kawalan, seret sel ini lebih dan melepaskan. 989 00:53:26,000 --> 00:53:30,000 >> Dan di sini kita katakan apa peralihan yang anda mahu gunakan? 990 00:53:30,000 --> 00:53:32,000 Adakah anda mahu menggunakan bahawa perkara slaid yang dipanggil menolak? 991 00:53:32,000 --> 00:53:34,000 Adakah anda mahu slaid dari bawah? 992 00:53:34,000 --> 00:53:36,000 Itu dipanggil ragaman. 993 00:53:36,000 --> 00:53:40,000 Dan sekali saya klik salah satu daripada ini, ia akan menarik anak panah ini untuk saya, 994 00:53:40,000 --> 00:53:44,000 dan ini bermakna bahawa saya telah benar-benar dikendalikan apa yang berlaku apabila saya tekan butang ini grafik. 995 00:53:44,000 --> 00:53:48,000 Saya tidak menulis apa-apa kod sebenarnya slaid dari satu skrin untuk satu depan. 996 00:53:48,000 --> 00:53:51,000 Saya ditakrifkan ini visual dalam Pembina Interface. 997 00:53:51,000 --> 00:53:55,000 Jika saya klik pada anak panah ini, kita boleh melihat bahawa saya memberikan perkara ini nama. 998 00:53:55,000 --> 00:53:59,000 Saya memanggilnya showDivisions, dan ini adalah supaya saya dapat tahu 999 00:53:59,000 --> 00:54:03,000 apa peralihan adalah kira-kira untuk berlaku, dan kita akan melihat mengapa hanya dalam sec. 1000 00:54:03,000 --> 00:54:06,000 Itulah bagaimana saya telah berwayar sehingga skrin yang berbeza dalam apl saya. 1001 00:54:06,000 --> 00:54:09,000 Jika ini adalah butang, sebagai contoh, bukannya paparan jadual, 1002 00:54:09,000 --> 00:54:11,000 Saya dapat mengawal klik pada butang, seret ke skrin seterusnya, 1003 00:54:11,000 --> 00:54:16,000 dan itulah bagaimana saya boleh melakukan navigasi yang cara. 1004 00:54:16,000 --> 00:54:19,000 >> Benar-benar cepat, jika kita datang ke MasterViewController, 1005 00:54:19,000 --> 00:54:22,000 sekali lagi, kita hanya akan menentukan senarai perkara 1006 00:54:22,000 --> 00:54:26,000 yang akan dipaparkan dalam paparan jadual. 1007 00:54:26,000 --> 00:54:29,000 Di sini saya cakapkan Saya mahu anda mengambil fail plist, 1008 00:54:29,000 --> 00:54:32,000 dan saya mahu anda untuk memuatkan ke dalam kamus, 1009 00:54:32,000 --> 00:54:35,000 dan sekali anda mempunyai kamus yang, saya akan menjawab soalan-soalan yang sama sekali lagi. 1010 00:54:35,000 --> 00:54:37,000 Berikut adalah beberapa bahagian. 1011 00:54:37,000 --> 00:54:41,000 Satu, terdapat satu baris untuk setiap liga, dan teks setiap sel 1012 00:54:41,000 --> 00:54:46,000 harus sama ada yang pertama, liga pertama, liga kedua, dan sebagainya. 1013 00:54:46,000 --> 00:54:51,000 Akhir sekali, saya akan menggunakan kaedah ini bahawa kita hanya saw dipanggil prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 dan ini adalah kaedah yang akan dipecat apabila saya klik 1015 00:54:54,000 --> 00:54:57,000 pada salah satu dari orang-orang baris dan oleh itu mengaktifkan peralihan itu 1016 00:54:57,000 --> 00:54:59,000 bahawa saya telah menubuhkan dengan anak panah. 1017 00:54:59,000 --> 00:55:02,000 Ini mengatakan bahawa saya boleh mempunyai pelbagai 1018 00:55:02,000 --> 00:55:05,000 hubungan dari satu skrin yang lain. 1019 00:55:05,000 --> 00:55:08,000 Jika saya mempunyai 2 butang dan setiap butang akan membawa anda ke skrin yang berbeza 1020 00:55:08,000 --> 00:55:10,000 Saya akan mempunyai 2 segues, 1 untuk setiap butang. 1021 00:55:10,000 --> 00:55:14,000 Tetapi prepareForSegue ini, sekali lagi, akan diguna semula 1022 00:55:14,000 --> 00:55:17,000 bagi setiap hubungan yang berbeza, jadi ini bermakna bahawa saya perlu cara 1023 00:55:17,000 --> 00:55:21,000 mengenal pasti jika anda menekan butang pertama atau anda tekan butang kedua. 1024 00:55:21,000 --> 00:55:25,000 >> Ingat apabila saya memberikan yang segue nama ini showDivisions, 1025 00:55:25,000 --> 00:55:29,000 itulah bagaimana saya kini tahu bahawa ini adalah segue yang telah diaktifkan. 1026 00:55:29,000 --> 00:55:32,000 Apa yang saya mahu lakukan adalah saya mahu katakan 1027 00:55:32,000 --> 00:55:35,000 Saya mahu mengetahui apa yang saya hanya melanda, 1028 00:55:35,000 --> 00:55:38,000 dan sebagainya untuk mendapatkan bahawa, saya boleh katakan saya mahu indexPath bagi baris dipilih, 1029 00:55:38,000 --> 00:55:42,000 ingat indexPath hanya mengatakan di mana saya hanya klik, 1030 00:55:42,000 --> 00:55:47,000 dan kemudian saya ingin mengatakan saya mahu mengetahui di mana saya akan. 1031 00:55:47,000 --> 00:55:50,000 DestinationViewController ini, itulah harta segue itu. 1032 00:55:50,000 --> 00:55:53,000 Itulah skrin saya akan, 1033 00:55:53,000 --> 00:55:56,000 jadi saya tahu bahawa skrin saya akan dipanggil DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 kerana saya mencipta kelas itu, 1035 00:55:59,000 --> 00:56:02,000 dan jadi sekarang jika saya katakan d.divisions 1036 00:56:02,000 --> 00:56:06,000 Saya kini menetapkan harta pengawal pandangan saya kira-kira untuk pergi ke. 1037 00:56:06,000 --> 00:56:10,000 Ini adalah bagaimana saya menghantar data dari satu skrin ke skrin yang lain. 1038 00:56:10,000 --> 00:56:13,000 >> Hanya melihat DivisionsViewController ini 1039 00:56:13,000 --> 00:56:16,000 anda boleh lihat di sini bahawa dalam fail h 1040 00:56:16,000 --> 00:56:20,000 ada adalah bahawa bahagian harta, dan itulah apa yang saya pada dasarnya populating, 1041 00:56:20,000 --> 00:56:25,000 jadi itulah bagaimana saya tahu bahawa saya memaparkan bahagian yang sepadan dengan 1042 00:56:25,000 --> 00:56:28,000 liga yang saya klik, dan sekali lagi, 1043 00:56:28,000 --> 00:56:31,000 paparan jadual sebenar kelihatan hampir sama, hanya menjawab mereka 1044 00:56:31,000 --> 00:56:34,000 3 soalan mudah serta mengenal pasti 1045 00:56:34,000 --> 00:56:37,000 apa yang berlaku apabila anda bergerak ke skrin seterusnya. 1046 00:56:37,000 --> 00:56:40,000 Hanya beberapa perkara lain di sini. 1047 00:56:40,000 --> 00:56:43,000 Anda notis di bahagian atas di sini bahawa bukannya mengatakan # include 1048 00:56:43,000 --> 00:56:45,000 Saya kini mengatakan # mengimport. 1049 00:56:45,000 --> 00:56:47,000 Ini adalah hanya satu perkara Objektif-C. 1050 00:56:47,000 --> 00:56:52,000 Import adalah pada dasarnya versi yang lebih bagus daripada termasuk, 1051 00:56:52,000 --> 00:56:57,000 dan sebagai contoh, kita perlu tahu apa kelas ini, 1052 00:56:57,000 --> 00:57:00,000 jadi saya tidak boleh hanya berkata DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Jika kita tidak hashtag dalam standardio.c fail c. 1054 00:57:05,000 --> 00:57:07,000 pengkompil tidak mempunyai idea apa yang printf adalah. 1055 00:57:07,000 --> 00:57:12,000 Begitu juga, jika saya tidak mengimport DivisionsViewController 1056 00:57:12,000 --> 00:57:16,000 pengkompil benar-benar tidak mempunyai idea apa DivisionsViewController adalah. 1057 00:57:16,000 --> 00:57:19,000 Hanya pastikan bahawa dalam m fail yang berbeza anda. Anda pastikan untuk mengimport 1058 00:57:19,000 --> 00:57:25,000 h sepadan. fail supaya pengkompil tahu apa yang berlaku. 1059 00:57:25,000 --> 00:57:31,000 >> Akhir sekali, apakah Apple akhirnya tidak memaparkan beberapa data menggunakan pandangan web, 1060 00:57:31,000 --> 00:57:35,000 dan sebagainya pandangan web adalah objek di mana anda boleh membenamkan 1061 00:57:35,000 --> 00:57:37,000 pelayar web yang sedikit di dalam aplikasi anda. 1062 00:57:37,000 --> 00:57:40,000 Semua yang anda perlu lakukan adalah membekalkan URL ke pelayar web anda, 1063 00:57:40,000 --> 00:57:43,000 jadi saya mahu untuk pergi ke mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 dan ini adalah bagaimana saya boleh mengakses halaman rumah bagi setiap pasukan, 1065 00:57:46,000 --> 00:57:49,000 dan demikian oleh lulus dalam URL ini 1066 00:57:49,000 --> 00:57:52,000 pandangan web boleh memaparkan ini untuk saya, dan saya boleh melayari sekitar, 1067 00:57:52,000 --> 00:58:01,000 dan simulator adalah digunakan oleh yang satu. 1068 00:58:01,000 --> 00:58:03,000 Sekarang ini datang dari plist saya. 1069 00:58:03,000 --> 00:58:07,000 Jika saya klik ini ini juga datang dari plist saya, dan gelongsor ini telah dikendalikan 1070 00:58:07,000 --> 00:58:09,000 dengan menentukan mereka segues. 1071 00:58:09,000 --> 00:58:12,000 Saya klik ini dan satu lagi, 1072 00:58:12,000 --> 00:58:15,000 dan kini di sini adalah UIWebView saya, jadi hanya seperti yang 1073 00:58:15,000 --> 00:58:19,000 di sini adalah laman web untuk URL yang saya hanya tertanam, 1074 00:58:19,000 --> 00:58:21,000 dan saya tidak perlu untuk mengendalikan apa-apa gila. 1075 00:58:21,000 --> 00:58:24,000 Ini adalah bagaimana untuk memaparkan laman web. 1076 00:58:24,000 --> 00:58:27,000 Perkara seperti butang ini kembali di sini juga diberikan kepada saya 1077 00:58:27,000 --> 00:58:33,000 benar-benar secara percuma kerana saya telah ditakrifkan perhubungan ini menggunakan segues. 1078 00:58:33,000 --> 00:58:37,000 >> Apa-apa soalan? Yeah. 1079 00:58:37,000 --> 00:58:40,000 [Pelajar] Jadi apabila anda menggunakan alloc, anda tidak perlu kepada apa-apa yang percuma? 1080 00:58:40,000 --> 00:58:43,000 Tepat sekali, apabila anda memanggil alloc dan INIT anda tidak perlu untuk membebaskan. 1081 00:58:43,000 --> 00:58:46,000 IOS akan untuk mengendalikan semua itu untuk anda. 1082 00:58:46,000 --> 00:58:51,000 Ia adalah indah, dan anda tidak melanggar mana-mana kaedah. Yeah. 1083 00:58:51,000 --> 00:58:54,000 [Pelajar] Jika anda untuk memasukkan lebih banyak pasukan yang boleh dimuatkan pada skrin, 1084 00:58:54,000 --> 00:58:58,000 ia secara automatik akan mempunyai pilihan tatal, atau adalah sesuatu yang anda perlu menambah? 1085 00:58:58,000 --> 00:59:01,000 Tepat sekali, jika saya mempunyai lebih banyak pasukan, sebagai contoh, ia secara automatik akan mengendalikan 1086 00:59:01,000 --> 00:59:04,000 menatal bagi saya, dan semua prestasi kebimbangan 1087 00:59:04,000 --> 00:59:08,000 dengan meja besar juga dikendalikan sepenuhnya bagi saya. 1088 00:59:08,000 --> 00:59:11,000 >> Soalan-soalan lain? 1089 00:59:11,000 --> 00:59:13,000 Semua kod ini akan diberikan. 1090 00:59:13,000 --> 00:59:16,000 Kami jenis glossed lebih sedikit butir-butir yang lebih kecil, 1091 00:59:16,000 --> 00:59:19,000 tetapi perkara-perkara seperti menetapkan beberapa harta untuk paparan web 1092 00:59:19,000 --> 00:59:22,000 hanya perkara-perkara yang anda boleh mendapatkan dengan melayari dokumentasi Apple, 1093 00:59:22,000 --> 00:59:24,000 yang benar-benar, benar-benar baik dibentangkan. 1094 00:59:24,000 --> 00:59:27,000 Mereka mempunyai banyak aplikasi sampel dan contoh kelaziman 1095 00:59:27,000 --> 00:59:34,000 API yang berbeza, jadi pastinya meneliti mereka jika anda boleh. 1096 00:59:34,000 --> 00:59:36,000 Hanya beberapa pautan membantu anda mungkin mahu mengambil melihat. 1097 00:59:36,000 --> 00:59:38,000 Ini adalah beberapa panduan dokumentasi berguna. 1098 00:59:38,000 --> 00:59:41,000 URL adalah besar, jadi mereka dipendekkan. 1099 00:59:41,000 --> 00:59:44,000 Ini pertama adalah keseluruhan perpustakaan dokumentasi. 1100 00:59:44,000 --> 00:59:46,000 Terdapat bar carian sedikit, jadi jika anda mula menaip butang 1101 00:59:46,000 --> 00:59:50,000 ia akan mula memberikan anda semua maklumat tentang semua perkara yang anda boleh lakukan dengan butang. 1102 00:59:50,000 --> 00:59:53,000 Saya juga telah dimasukkan Lihat Jadual Pengaturcaraan Panduan. 1103 00:59:53,000 --> 00:59:56,000 Ia mengendalikan pemandangan meja di lebih terperinci, 1104 00:59:56,000 --> 01:00:00,000 bagaimana untuk melakukan perkara-perkara seperti dinamik menambah sel-sel atau sel-sel edit atau membuang mereka. 1105 01:00:00,000 --> 01:00:02,000 >> Terdapat banyak aplikasi sampel daripada Apple yang akan menunjukkan anda bagaimana untuk berbuat demikian, 1106 01:00:02,000 --> 01:00:05,000 dan akhirnya, ini yang terakhir adalah Garis Panduan Muka Manusia, 1107 01:00:05,000 --> 01:00:09,000 dan ini adalah pada dasarnya beberapa perbincangan komponen UI, 1108 01:00:09,000 --> 01:00:12,000 perkara-perkara seperti tidak membuat butang yang 4 piksel oleh 4 piksel. 1109 01:00:12,000 --> 01:00:15,000 Itulah idea yang buruk, dan perkara-perkara lain bahawa Apple mahu anda lakukan 1110 01:00:15,000 --> 01:00:18,000 untuk menggalakkan reka bentuk yang baik. 1111 01:00:18,000 --> 01:00:23,000 >> Sebarang soalan terakhir sebelum kita selesaikan? 1112 01:00:23,000 --> 01:00:27,000 Semua hak, pasti berasa bebas-Sign In Register New akan mempunyai label khas pada Bincangkan. 1113 01:00:27,000 --> 01:00:30,000 Kami akan mempunyai IOS satu, jadi pasti berasa bebas untuk menggunakan bahawa. 1114 01:00:30,000 --> 01:00:34,000 Jika anda mahu bekerja dengan rakan sekelas anda pada projek-projek 1115 01:00:34,000 --> 01:00:37,000 atau membantu memikirkan beberapa perkara IOS rawak 1116 01:00:37,000 --> 01:00:40,000 berasa bebas untuk menghantar e-mel kepada saya, dan pastinya meneliti semua talian kod kerana 1117 01:00:40,000 --> 01:00:43,000 hanya dalam kepentingan masa kita jenis glossed lebih lebih 1118 01:00:43,000 --> 01:00:45,000 berbutir halus butiran perkara. 1119 01:00:45,000 --> 01:00:47,000 Tetapi jika tidak, maka nasib baik pada projek IOS anda, dan saya berharap kita mempunyai 1120 01:00:47,000 --> 01:00:53,000 kemasukan besar aplikasi di App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]