1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seminar] [iOS: Menulis Apps Seperti Boss] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Ini adalah CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Baiklah, setiap orang, selamat datang untuk iOS: Menulis Apps seperti Boss. 5 00:00:12,000 --> 00:00:16,000 Seminar ini akan fokus pada menulis aplikasi untuk iPhone 6 00:00:16,000 --> 00:00:19,000 dan pada gilirannya menulis aplikasi untuk iPad, dan jadi kita pada dasarnya akan berjalan melalui 7 00:00:19,000 --> 00:00:23,000 berbeda beberapa contoh tentang bagaimana membuat sebuah aplikasi, permainan sederhana seperti Toe Tic Tac, 8 00:00:23,000 --> 00:00:26,000 atau jika Anda lebih tertarik dalam membuat sebuah aplikasi seperti semacam pembaca berita 9 00:00:26,000 --> 00:00:30,000 atau sesuatu yang berinteraksi dengan internet saya akan berbicara tentang itu juga. 10 00:00:30,000 --> 00:00:32,000 Berikut agenda singkat kami. 11 00:00:32,000 --> 00:00:36,000 >> Aplikasi IOS ditulis dalam bahasa yang disebut Objective-C, 12 00:00:36,000 --> 00:00:39,000 dan jadi ini adalah sedikit mirip dengan C, tetapi tidak benar-benar sama sekali, 13 00:00:39,000 --> 00:00:41,000 jadi kita akan berbicara sedikit tentang bahasa itu sendiri 14 00:00:41,000 --> 00:00:45,000 dan kemudian bagaimana membangun aplikasi iPhone menggunakan program aplikasi yang disebut Xcode, 15 00:00:45,000 --> 00:00:48,000 yang jika Anda belum download belum merasa bebas untuk memulai download sekarang. 16 00:00:48,000 --> 00:00:50,000 Ini beberapa gigabyte. 17 00:00:50,000 --> 00:00:54,000 Ini harus bebas di App Store, sehingga Anda harus memiliki Mac 18 00:00:54,000 --> 00:00:57,000 idealnya menjalankan versi terbaru dari OS X. 19 00:00:57,000 --> 00:00:59,000 Jika Anda tidak, tidak ada masalah. 20 00:00:59,000 --> 00:01:02,000 Kami memiliki Mac di pusat ilmu pengetahuan yang tersedia untuk Anda gunakan 21 00:01:02,000 --> 00:01:05,000 dengan Xcode diinstal, sehingga merasa bebas untuk menggunakan mereka untuk pembangunan. 22 00:01:05,000 --> 00:01:07,000 Jika Anda ingin membuat sebuah aplikasi, tetapi tidak memiliki Mac, jangan khawatir. 23 00:01:07,000 --> 00:01:09,000 Ada banyak sumber daya kampus untuk itu. 24 00:01:09,000 --> 00:01:15,000 Dan demikian maka kita akan menutupi 2 contoh yang lebih besar dari aplikasi yang berbeda Anda dapat membuat. 25 00:01:15,000 --> 00:01:19,000 Objective-C secara teknis apa yang disebut set super C. 26 00:01:19,000 --> 00:01:24,000 Itu berarti bahwa setiap kode C juga berlaku Objective-C kode. 27 00:01:24,000 --> 00:01:29,000 Itu berarti bahwa kita jenis saluran ditempelkan pada beberapa fitur tambahan untuk C. 28 00:01:29,000 --> 00:01:33,000 Beberapa fitur termasuk tidak harus pernah menulis malloc lagi, terima kasih Tuhan, 29 00:01:33,000 --> 00:01:36,000 tidak harus khawatir tentang mereka pointer bodoh dan membebaskan mereka dan semua hal yang 30 00:01:36,000 --> 00:01:40,000 Anda benci tentang C, dan itu agak hilang di Objective-C. 31 00:01:40,000 --> 00:01:43,000 >> Sekarang, Objective-C juga memiliki perpustakaan standar yang jauh lebih besar, 32 00:01:43,000 --> 00:01:47,000 sehingga ada lebih banyak fungsionalitas yang Anda peroleh untuk bebas dari dalam Objective-C. 33 00:01:47,000 --> 00:01:50,000 Ingat ketika kita sedang menulis PHP kami melihat bahwa kami pergi dari 34 00:01:50,000 --> 00:01:54,000 bahasa terkecil ke perpustakaan raksasa dari semua hal-hal gila yang dapat Anda lakukan. 35 00:01:54,000 --> 00:01:56,000 Hal yang sama terjadi di IOS. 36 00:01:56,000 --> 00:01:59,000 Ada objek untuk hal-hal seperti kalender Buddha, dan benar-benar sesuatu 37 00:01:59,000 --> 00:02:05,000 Anda mungkin bisa memikirkan kemungkinan sudah ada dalam pelaksanaan Objective-C. 38 00:02:05,000 --> 00:02:08,000 Bagian Tujuan dari Objective-C adalah referensi sesuatu 39 00:02:08,000 --> 00:02:11,000 disebut Object-Oriented Programming. 40 00:02:11,000 --> 00:02:14,000 Ini adalah jenis konsep baru, tapi kami sudah benar-benar sebagian besar belajar 41 00:02:14,000 --> 00:02:17,000 banyak konsep-konsep sudah. 42 00:02:17,000 --> 00:02:19,000 Gagasan di balik Object-Oriented Programming adalah bahwa Anda akan menyusun 43 00:02:19,000 --> 00:02:23,000 banyak kode Anda di sekitar hal-hal yang disebut kelas, 44 00:02:23,000 --> 00:02:26,000 dan kelas-kelas ini benar-benar dimuliakan structs. 45 00:02:26,000 --> 00:02:30,000 Di dalam sebuah struct pada dasarnya kita mengatakan di sini adalah suatu hal, 46 00:02:30,000 --> 00:02:32,000 dan hal ini dapat memiliki anggota. 47 00:02:32,000 --> 00:02:35,000 Sebagai contoh, sebuah node dalam linked list bisa memiliki hal-hal lain 48 00:02:35,000 --> 00:02:38,000 seperti nilai, sebuah pointer ke node berikutnya dalam daftar, 49 00:02:38,000 --> 00:02:44,000 dan bersama bahwa pointer dan nilai yang terdiri ini contoh salah satu dari struct. 50 00:02:44,000 --> 00:02:47,000 Kelas sangat mirip kecuali 51 00:02:47,000 --> 00:02:50,000 kelas juga dapat memiliki fungsi dalam diri mereka. 52 00:02:50,000 --> 00:02:54,000 Ketika kita menyatakan struct, kita hanya bisa mengatakan n int atau * node berikutnya. 53 00:02:54,000 --> 00:02:57,000 >> Sekarang dengan Objective-C kita benar-benar dapat menempatkan fungsi 54 00:02:57,000 --> 00:02:59,000 dalam hal-hal. 55 00:02:59,000 --> 00:03:03,000 Hal lain yang dapat dilakukan adalah kelas mereka dapat mewarisi data dari kelas lain. 56 00:03:03,000 --> 00:03:07,000 Sebagai contoh, kita akan melihat sekelompok built-in Objective-C kelas. 57 00:03:07,000 --> 00:03:11,000 Salah satu dari mereka bisa menjadi kelas yang mewakili pandangan untuk layar, 58 00:03:11,000 --> 00:03:14,000 dan sebagainya dengan mengatakan saya ingin menerapkan pandangan saya sendiri 59 00:03:14,000 --> 00:03:18,000 pada dasarnya kita mengatakan seseorang selama di Apple, orang mungkin benar-benar baik, 60 00:03:18,000 --> 00:03:21,000 menulis kelas ini bagi saya, dan menangani hal-hal seperti menampilkan tombol 61 00:03:21,000 --> 00:03:25,000 atau render layar, dan kita akan benar-benar sedih 62 00:03:25,000 --> 00:03:28,000 untuk melaksanakan semua yang fungsi diri kita sendiri, dan sebagainya hanya dengan 63 00:03:28,000 --> 00:03:31,000 mewarisi data yang kita dapat mengatakan segala sesuatu yang Anda lakukan di kelas 64 00:03:31,000 --> 00:03:34,000 Saya juga ingin dalam kelas saya, dan kemudian saya akan melakukan beberapa hal-hal lain, 65 00:03:34,000 --> 00:03:37,000 yaitu menerapkan sebuah aplikasi. 66 00:03:37,000 --> 00:03:40,000 Itulah apa yang warisan kata berarti. Kita akan melihat contoh yang lebih konkret. 67 00:03:40,000 --> 00:03:42,000 >> Dan akhirnya, kunci dengan Object-Oriented Programming adalah bahwa 68 00:03:42,000 --> 00:03:45,000 itu mengarah ke enkapsulasi data. 69 00:03:45,000 --> 00:03:48,000 Dalam beberapa masalah kita set kita bisa memiliki ini, variabel global besar 70 00:03:48,000 --> 00:03:51,000 dan GLOBALS mana-mana, dan itulah bagaimana kami akan melacak negara. 71 00:03:51,000 --> 00:03:55,000 Dengan kelas kita bisa mulai encapsulating informasi dalam suatu objek. 72 00:03:55,000 --> 00:03:58,000 Jika kita memiliki satu layar pada aplikasi kami, kami tidak benar-benar perlu untuk memiliki data dari 73 00:03:58,000 --> 00:04:01,000 layar lain di dalam aplikasi kita itu, 74 00:04:01,000 --> 00:04:04,000 dan sebagainya dengan encapsulating hal dalam kelas ini sebenarnya mengarah 75 00:04:04,000 --> 00:04:08,000 untuk desain kode yang jauh lebih baik, dan hal ini mungkin dengan beberapa fitur tambahan 76 00:04:08,000 --> 00:04:11,000 dari Objective-C. 77 00:04:11,000 --> 00:04:15,000 Peringatan, sintaks untuk Objective-C adalah pisang. 78 00:04:15,000 --> 00:04:19,000 Hal ini seperti apa yang telah kita lihat sebelumnya, 79 00:04:19,000 --> 00:04:22,000 sehingga sangat sedikit kurva belajar membiasakan diri 80 00:04:22,000 --> 00:04:24,000 apa sih artinya ini? 81 00:04:24,000 --> 00:04:27,000 Tapi setelah Anda melewati bahwa kurva pembelajaran awal itu benar-benar, benar-benar mulus 82 00:04:27,000 --> 00:04:29,000 untuk mulai menulis aplikasi. 83 00:04:29,000 --> 00:04:33,000 >> Untuk mendeklarasikan kelas, untuk mengatakan di sini adalah kelas saya, itu ada, 84 00:04:33,000 --> 00:04:35,000 dan mungkin di sini adalah beberapa hal yang aku akan menentukan nanti, 85 00:04:35,000 --> 00:04:38,000 Aku akan mengatakan antarmuka @. 86 00:04:38,000 --> 00:04:41,000 Aku akan mengatakan antarmuka @. Aku akan memberikan kelas saya nama. 87 00:04:41,000 --> 00:04:43,000 Dan kemudian di tempat lain saya akan mengatakan @ end, 88 00:04:43,000 --> 00:04:46,000 dan segala sesuatu di antara antarmuka @ dan ujung @ 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 di dalam file kami. H. 91 00:04:51,000 --> 00:04:55,000 Sama seperti di C kami h. File pada dasarnya mengatakan di sini adalah beberapa hal yang akan ada. 92 00:04:55,000 --> 00:04:57,000 Aku tidak perlu memberitahu Anda apa yang mereka lakukan belum, 93 00:04:57,000 --> 00:04:59,000 tapi compiler perlu tahu bahwa mereka ada. 94 00:04:59,000 --> 00:05:04,000 Kemudian dalam m kami. File-karena m untuk Objective-C 95 00:05:04,000 --> 00:05:08,000 adalah di mana kita benar-benar akan menentukan apa yang kelas-kelas lakukan. 96 00:05:08,000 --> 00:05:11,000 Sama seperti kami file. C, kami menyediakan sebuah implementasi untuk fungsi. 97 00:05:11,000 --> 00:05:15,000 Dalam. M file kita kita akan katakan di sini adalah apa yang semua fungsi 98 00:05:15,000 --> 00:05:18,000 dalam kelas saya-apa yang mereka lakukan. 99 00:05:18,000 --> 00:05:22,000 Dan akhirnya, dalam sebuah struct kita bisa mengatakan mereka dalam kurung kurawal 100 00:05:22,000 --> 00:05:25,000 int n atau node * berikutnya, 101 00:05:25,000 --> 00:05:28,000 dan di Objective-C kita akan menggunakan kata kunci properti @, 102 00:05:28,000 --> 00:05:31,000 dan ini adalah apa yang akan menentukan sifat, 103 00:05:31,000 --> 00:05:36,000 atau non-fungsi yang merupakan bagian dari kelas saya. 104 00:05:36,000 --> 00:05:40,000 >> Memanggil fungsi di Objective-C juga pisang. 105 00:05:40,000 --> 00:05:43,000 Ketika kita menyatakan fungsi di C kita mengatakan sesuatu seperti int foo 106 00:05:43,000 --> 00:05:46,000 dan terbuka paren dan kemudian memberikannya daftar argumen. 107 00:05:46,000 --> 00:05:51,000 Inilah yang menyatakan metode atau fungsi terlihat seperti di Objective-C. 108 00:05:51,000 --> 00:05:54,000 Jika saya ingin menyatakan fungsi atau metode 109 00:05:54,000 --> 00:05:58,000 mana saya katakan metode benar-benar hanya sebuah fungsi yang merupakan anggota dari sebuah kelas, 110 00:05:58,000 --> 00:06:01,000 sehingga jenis dipertukarkan, tetapi tidak benar-benar, 111 00:06:01,000 --> 00:06:03,000 sehingga dalam metode saya, saya ingin membuat sebuah metode baru. 112 00:06:03,000 --> 00:06:06,000 Ini akan mengembalikan apa-apa, sehingga akan menjadi tipe void. 113 00:06:06,000 --> 00:06:08,000 Ini adalah jenis kembalinya fungsi saya. 114 00:06:08,000 --> 00:06:11,000 Sekarang kita memiliki parens di sini karena-saya tidak tahu. 115 00:06:11,000 --> 00:06:14,000 Selanjutnya akan menjadi nama fungsi saya, 116 00:06:14,000 --> 00:06:17,000 dan akhirnya kita memiliki titik koma seperti yang kami miliki di C. 117 00:06:17,000 --> 00:06:19,000 Apa yang baru di sini adalah orang ini di sini. 118 00:06:19,000 --> 00:06:22,000 Tanda hubung ini sebenarnya diperlukan, dan apa ini, dapat dikatakan bahwa 119 00:06:22,000 --> 00:06:26,000 metode ini di sini harus dipanggil pada sebuah instance dari kelas. 120 00:06:26,000 --> 00:06:29,000 >> Setelah kami menyatakan struct kita mungkin mengatakan sesuatu seperti 121 00:06:29,000 --> 00:06:32,000 struct n simpul, dan yang benar-benar dibuat 122 00:06:32,000 --> 00:06:35,000 atau instantiated salah satu structs sehingga saya benar-benar bisa mulai bekerja 123 00:06:35,000 --> 00:06:38,000 dengan apa yang di dalamnya, sehingga dasbor ini berarti bahwa kita harus 124 00:06:38,000 --> 00:06:41,000 instantiate kelas hanya seperti kita instantiated bahwa struct 125 00:06:41,000 --> 00:06:43,000 sebelum kita dapat memanggil metode ini di atasnya. 126 00:06:43,000 --> 00:06:46,000 Jika saya ingin mulai menambahkan argumen untuk metode saya 127 00:06:46,000 --> 00:06:48,000 mendapatkan pisang bahkan lebih. 128 00:06:48,000 --> 00:06:50,000 Berikut nama metode saya. 129 00:06:50,000 --> 00:06:53,000 Lalu aku akan memiliki titik dua, dan setelah usus ini dikatakan di sini datang beberapa argumen. 130 00:06:53,000 --> 00:06:56,000 Metode ini memerlukan satu argumen. 131 00:06:56,000 --> 00:06:59,000 Jenis argumen adalah int, dan nama argumen bahwa 132 00:06:59,000 --> 00:07:03,000 atau variabel yang aku akan mulai menggunakan dalam metode ini disebut i. 133 00:07:03,000 --> 00:07:05,000 Sekali lagi, ini adalah metode. Dibutuhkan satu argumen. 134 00:07:05,000 --> 00:07:10,000 >> Jika Anda ingin mulai menambahkan lebih argumen itu mendapat lebih banyak pisang 135 00:07:10,000 --> 00:07:13,000 dalam bahwa kita telah usus ini yang mengatakan inilah daftar argumen. 136 00:07:13,000 --> 00:07:15,000 Ini argumen pertama adalah bilangan bulat. 137 00:07:15,000 --> 00:07:17,000 Sekarang, ini argumen kedua menarik. 138 00:07:17,000 --> 00:07:20,000 Variabel yang saya akan menggunakan dalam fungsi saya 139 00:07:20,000 --> 00:07:23,000 disebut f, sehingga dalam fungsi saya, saya bisa mengatakan 140 00:07:23,000 --> 00:07:25,000 f = 1 + atau sesuatu. 141 00:07:25,000 --> 00:07:30,000 Ini hal di sini pada dasarnya adalah sebuah kunci untuk itu argumen atau parameter. 142 00:07:30,000 --> 00:07:34,000 Sama seperti kita memiliki pasangan nilai kunci dan sesuatu seperti JSON atau array asosiatif 143 00:07:34,000 --> 00:07:37,000 Objective-C membuat keputusan untuk mengatakan, oke, hanya sehingga benar-benar jelas 144 00:07:37,000 --> 00:07:39,000 ketika Anda memanggil metode apa semua parameter ini 145 00:07:39,000 --> 00:07:41,000 Aku benar-benar akan nama mereka semua. 146 00:07:41,000 --> 00:07:45,000 Bila Anda memanggil sebuah metode, Anda benar-benar akan mengatakan andFloat, 147 00:07:45,000 --> 00:07:47,000 dan kemudian Anda akan lulus masuk 148 00:07:47,000 --> 00:07:50,000 >> Menariknya, yang satu ini tidak disebutkan, tetapi semua parameter lainnya, 149 00:07:50,000 --> 00:07:53,000 jadi jika kita memiliki argumen 3 saya bisa mengatakan andFloat 150 00:07:53,000 --> 00:07:56,000 dan lain mengambang dan sebagainya. 151 00:07:56,000 --> 00:08:01,000 Ketika saya sebut metode ini adalah pisang saja, 152 00:08:01,000 --> 00:08:04,000 jadi jika saya memiliki objek, dan saya mendefinisikan metode yang disebut foo, 153 00:08:04,000 --> 00:08:09,000 dan saya ingin menyebutnya, daripada mengatakan foo terbuka / parens dekat 154 00:08:09,000 --> 00:08:11,000 Aku akan membuka braket. 155 00:08:11,000 --> 00:08:13,000 Berikut nama metode saya. 156 00:08:13,000 --> 00:08:17,000 Aku akan menutup braket, dan ini adalah obyek Aku menyebutnya di. 157 00:08:17,000 --> 00:08:20,000 Ingat, semua metode yang ada dalam kelas 158 00:08:20,000 --> 00:08:23,000 karena kelas dapat memiliki metode yang didefinisikan dalam diri mereka. 159 00:08:23,000 --> 00:08:26,000 >> Di sini saya telah sewenang-wenang menciptakan sebuah objek dari beberapa kelas, 160 00:08:26,000 --> 00:08:28,000 dan ini adalah sintaks untuk melakukan itu. 161 00:08:28,000 --> 00:08:31,000 Ada 2 langkah untuk menciptakan suatu objek. 162 00:08:31,000 --> 00:08:34,000 Langkah pertama adalah untuk mengatakan saya ingin mengalokasikan ruang. 163 00:08:34,000 --> 00:08:37,000 Ini adalah setara dengan malloc. Kami tidak harus mengatakan malloc lagi. 164 00:08:37,000 --> 00:08:42,000 Kami menjatuhkan m, membuatnya alloc, dan diganti. C dengan. M. 165 00:08:42,000 --> 00:08:47,000 Setelah kita sesuatu alloc kita kemudian perlu menginisialisasi itu. 166 00:08:47,000 --> 00:08:49,000 Pada dasarnya ketika Anda membuat objek Anda mungkin ingin memiliki beberapa logika 167 00:08:49,000 --> 00:08:53,000 yang mengeksekusi ketika mereka diciptakan, sehingga Anda dapat lulus dalam beberapa nilai default 168 00:08:53,000 --> 00:08:57,000 atau sesuatu seperti itu, dan jadi ini metode init adalah apa yang benar-benar menciptakan objek. 169 00:08:57,000 --> 00:08:59,000 Kami pertama mengalokasikan ruang, seperti yang kami lakukan di C, 170 00:08:59,000 --> 00:09:04,000 dan kemudian kita menginisialisasi, yang mungkin atau tidak mungkin melakukan banyak hal. 171 00:09:04,000 --> 00:09:07,000 Kemudian kita kembali hal ini menjadi o objek. 172 00:09:07,000 --> 00:09:09,000 Ada bintang di sini karena ini secara teknis pointer, 173 00:09:09,000 --> 00:09:12,000 tapi jangan khawatir, pointer tidak begitu besar kesepakatan di Objective-C lagi. 174 00:09:12,000 --> 00:09:15,000 >> Sekarang kita sudah instantiated kelas ini disebut NSObject, 175 00:09:15,000 --> 00:09:19,000 dan ini hanya kelas acak bahwa Apple memiliki. 176 00:09:19,000 --> 00:09:22,000 Kami telah instantiated ini, dan sekarang saya memiliki sebuah instance dari kelas ini 177 00:09:22,000 --> 00:09:25,000 dalam o objek, sehingga berarti bahwa jika saya didefinisikan 178 00:09:25,000 --> 00:09:29,000 metode ini saya bisa menyebut mereka seperti ini. 179 00:09:29,000 --> 00:09:31,000 Demikian pula, jika saya ingin memanggil metode dengan satu argumen, 180 00:09:31,000 --> 00:09:34,000 jadi ini adalah metode bar, yang mengambil satu argumen, 181 00:09:34,000 --> 00:09:38,000 dan di sini adalah baz: qux metode, jadi ini memakan waktu 2 argumen. 182 00:09:38,000 --> 00:09:44,000 Ini memanggil satu fungsi pada 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 akan terbiasa untuk itu. 185 00:09:50,000 --> 00:09:54,000 >> Oke, mari kita bicara tentang beberapa hal yang dibangun ke Objective-C 186 00:09:54,000 --> 00:09:56,000 yang belum tentu dibangun ke C. 187 00:09:56,000 --> 00:09:59,000 Dalam C kita semacam harus berurusan dengan string seperti ini array karakter bodoh, 188 00:09:59,000 --> 00:10:01,000 dan itu bisa benar-benar menjengkelkan. 189 00:10:01,000 --> 00:10:04,000 Objective-C memiliki mereka semua dibangun untuk kita, dan itu dibangun di 190 00:10:04,000 --> 00:10:06,000 menggunakan kelas ini disebut NSString. 191 00:10:06,000 --> 00:10:10,000 Ketika saya ingin membuat NSString kita memiliki sintaks yang lebih misterius. 192 00:10:10,000 --> 00:10:15,000 Daripada mengatakan "cs50" kita katakan @ "cs50" 193 00:10:15,000 --> 00:10:17,000 dan ini hanya sintaks untuk menyatakan string di Objective-C. 194 00:10:17,000 --> 00:10:21,000 Hal ini sangat mudah lupa, jadi jangan. 195 00:10:21,000 --> 00:10:24,000 Sekarang, setelah saya memiliki ini, ini adalah string, namun perhatikan 196 00:10:24,000 --> 00:10:26,000 itu benar-benar hanya sebuah objek. 197 00:10:26,000 --> 00:10:30,000 Aku berkata NSString, yang berarti saya instantiated kelas 198 00:10:30,000 --> 00:10:32,000 disebut NSString, yang orang lain menulis untuk saya, 199 00:10:32,000 --> 00:10:35,000 dan mereka sangat bagus tentang hal itu, dan jadi sekarang 200 00:10:35,000 --> 00:10:37,000 Saya bisa mulai memanggil metode di atasnya. 201 00:10:37,000 --> 00:10:40,000 Jika saya sebut metode panjang pada obyek s 202 00:10:40,000 --> 00:10:43,000 itu akan kembali ke saya panjang string. 203 00:10:43,000 --> 00:10:45,000 Ini 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 >> Demikian pula, metode lain saya mungkin ingin peduli adalah characterAtIndex ini. 206 00:10:51,000 --> 00:10:54,000 Ini adalah metode yang mengatakan pada string s 207 00:10:54,000 --> 00:10:57,000 Saya ingin Anda untuk mendapatkan karakter ke nol, 208 00:10:57,000 --> 00:10:59,000 dan jadi ini akan kembali ke saya c karakter, 209 00:10:59,000 --> 00:11:02,000 dan ada sejumlah lebih dari ini metode yang Anda dapat Google benar-benar mudah. 210 00:11:02,000 --> 00:11:07,000 Dokumentasi Apple adalah besar, dan kami akan melihat bahwa dalam sedikit. 211 00:11:07,000 --> 00:11:09,000 Mereka adalah string. 212 00:11:09,000 --> 00:11:11,000 Kami juga memiliki ukuran variabel array built in 213 00:11:11,000 --> 00:11:13,000 Ingat dalam C ketika kita menyatakan array 214 00:11:13,000 --> 00:11:16,000 kami harus mengatakan Anda memiliki 5 unsur, akhir cerita. 215 00:11:16,000 --> 00:11:18,000 Ketika kami sampai ke JavaScript dan PHP kita bisa mulai 216 00:11:18,000 --> 00:11:20,000 melakukan hal-hal seperti menambahkan elemen atau unsur bergerak. 217 00:11:20,000 --> 00:11:22,000 Kita bisa melakukan hal yang sama di Objective-C. 218 00:11:22,000 --> 00:11:26,000 Daripada membuat sebuah array dengan cara yang normal C 219 00:11:26,000 --> 00:11:30,000 kita lagi kelas lain yang disebut NSMutableArray. 220 00:11:30,000 --> 00:11:33,000 Ada juga NSArray, 221 00:11:33,000 --> 00:11:35,000 dan ini akan dasarnya merangkum berbagai beberapa. 222 00:11:35,000 --> 00:11:38,000 Ini mengatakan hal pertama yang ingin saya lakukan adalah saya ingin mengalokasikan 223 00:11:38,000 --> 00:11:41,000 ruang untuk sebuah array baru, dan setelah saya mengalokasikannya 224 00:11:41,000 --> 00:11:43,000 Saya kemudian perlu menginisialisasi itu. 225 00:11:43,000 --> 00:11:45,000 Sekali lagi, hanya memanggil 2 metode. 226 00:11:45,000 --> 00:11:48,000 Sekarang ini berarti bahwa dalam objek ini 227 00:11:48,000 --> 00:11:50,000 Saya telah array kosong duduk di sana. 228 00:11:50,000 --> 00:11:54,000 Jika saya ingin menambahkan sesuatu ke array ini, saya bisa memanggil metode addObject. 229 00:11:54,000 --> 00:11:59,000 Saya ingin menambahkan objek ke array, dan saya ingin menambahkan string CS50. 230 00:11:59,000 --> 00:12:02,000 Jika saya ingin menghapus sebaliknya bahwa saya bisa mengatakan saya ingin 231 00:12:02,000 --> 00:12:09,000 menghapus objek di tempat pertama pada array atau keberatan a. 232 00:12:09,000 --> 00:12:11,000 >> Masuk akal? 233 00:12:11,000 --> 00:12:14,000 Oke, Anda jenis bisa digunakan untuk hal braket 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 singkatan dari langkah berikutnya, yang merupakan salah satu perusahaan Steve Jobs pertama, 236 00:12:21,000 --> 00:12:24,000 dan di sanalah dia benar-benar mulai menulis banyak kode 237 00:12:24,000 --> 00:12:27,000 sebagai semacam dasar untuk Mac OS X dan semua hal-hal lain, 238 00:12:27,000 --> 00:12:32,000 dan jadi NS ini adalah jenis warisan yang bagus berteriak ke salah satu perusahaan sebelumnya 239 00:12:32,000 --> 00:12:34,000 kembali ketika Apple pertama kali memulai. 240 00:12:34,000 --> 00:12:36,000 Ini di mana-mana. 241 00:12:36,000 --> 00:12:41,000 Mari kita lihat contoh Objective-C yang lebih holistik. 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 pertama kali download Xcode dari App Store, 244 00:12:47,000 --> 00:12:50,000 membukanya, dan kemudian saya pergi di sini untuk file, 245 00:12:50,000 --> 00:12:54,000 ke sini untuk proyek baru, dan kemudian. 246 00:12:54,000 --> 00:12:57,000 Setelah saya melakukan itu saya memiliki semua pilihan ini dari apa yang saya ingin membuat, 247 00:12:57,000 --> 00:12:59,000 dan jadi kita akan melihat opsi ini nanti, 248 00:12:59,000 --> 00:13:03,000 tapi hanya untuk contoh ini, karena kita tidak benar-benar akan memiliki sebuah aplikasi belum, 249 00:13:03,000 --> 00:13:06,000 Aku datang ke sini, dan aku berkata Command Line Tool, 250 00:13:06,000 --> 00:13:09,000 dan ini adalah sebuah aplikasi yang aku bisa dijalankan pada baris perintah 251 00:13:09,000 --> 00:13:12,000 seperti kita telah lari dari C. 252 00:13:12,000 --> 00:13:16,000 Begitulah cara saya membuat proyek ini, dan jadi sekarang aku di sini, 253 00:13:16,000 --> 00:13:20,000 jadi mari kita pertama melihat file ini, dan hal ini akan terlihat cukup akrab. 254 00:13:20,000 --> 00:13:24,000 Saya memiliki nama int. Ada teman saya argc, argv teman saya yang lain. 255 00:13:24,000 --> 00:13:30,000 Dan jadi kita bisa melihat bahwa ini adalah titik masuk untuk pertama aplikasi saya Objective-C. 256 00:13:30,000 --> 00:13:32,000 Di sini kita bisa mengabaikan ini untuk saat ini. 257 00:13:32,000 --> 00:13:35,000 Ini pada dasarnya adalah beberapa hal manajemen memori yang Anda tidak akan benar-benar 258 00:13:35,000 --> 00:13:37,000 pernah harus khawatir. 259 00:13:37,000 --> 00:13:39,000 >> Mari kita lihat ini blok pertama di sini. 260 00:13:39,000 --> 00:13:46,000 Ini baris pertama, jika saya mengatakan Student * alice = [[alloc Mahasiswa] init] apa itu lakukan? 261 00:13:46,000 --> 00:13:50,000 Ini mahasiswa pertama di sini, ini mungkin kelas. 262 00:13:50,000 --> 00:13:54,000 Ini bukan kelas bahwa Apple menulis, tapi kelas yang saya tulis. 263 00:13:54,000 --> 00:13:57,000 Hal pertama yang ingin saya lakukan adalah saya ingin mengalokasikan ruang untuk siswa baru, 264 00:13:57,000 --> 00:14:00,000 dan kemudian saya ingin menginisialisasi, jadi ini memberi saya kembali 265 00:14:00,000 --> 00:14:05,000 ini objek mahasiswa baru, dan aku menyimpan ini dalam sebuah variabel yang disebut Alice. 266 00:14:05,000 --> 00:14:07,000 Mana kelas yang berasal dari? 267 00:14:07,000 --> 00:14:12,000 Nah, di sini di sisi kiri ini adalah semua file yang berbeda dalam proyek saya. 268 00:14:12,000 --> 00:14:16,000 Kita bisa lihat di sini saya memiliki Student.h dan Student.m a. 269 00:14:16,000 --> 00:14:20,000 File. H, ingat, adalah di mana saya menyatakan semua hal 270 00:14:20,000 --> 00:14:22,000 yang akan ada di dalam kelas. 271 00:14:22,000 --> 00:14:25,000 >> Mari kita lihat pada saat itu. 272 00:14:25,000 --> 00:14:29,000 Baiklah, di sini kita memiliki antarmuka @, dan ini mengatakan bahwa di sini datang 273 00:14:29,000 --> 00:14:33,000 deklarasi dari segala sesuatu yang akan ada dalam kelas saya. 274 00:14:33,000 --> 00:14:36,000 Lalu aku memiliki titik dua. Lalu aku punya hal NSObject. 275 00:14:36,000 --> 00:14:40,000 Usus ini menandakan bahwa bit warisan kami sedang mendiskusikan sedikit lebih awal. 276 00:14:40,000 --> 00:14:43,000 Ini mengatakan semuanya NSObject yang bisa dilakukan 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 semuanya NSObject ini dapat melakukan Saya ingin bisa melakukan itu. 279 00:14:50,000 --> 00:14:54,000 Dengan mengatakan: NSObject yang berarti bahwa saya pada dasarnya 280 00:14:54,000 --> 00:14:58,000 mewarisi semua fungsi dari kelas lain. 281 00:14:58,000 --> 00:15:02,000 Itu benar-benar memberi saya sejumlah besar metode yang berbeda dan sifat yang dapat saya gunakan. 282 00:15:02,000 --> 00:15:05,000 Di sini saya membuat 2 properti. 283 00:15:05,000 --> 00:15:08,000 Itu berarti mahasiswa saya, jika ini adalah struct, ini akan menjadi 2 hal 284 00:15:08,000 --> 00:15:11,000 dalam struct saya, sehingga setiap siswa memiliki nama 285 00:15:11,000 --> 00:15:14,000 yang adalah string, dan mahasiswa juga memiliki nilai, 286 00:15:14,000 --> 00:15:17,000 yang int. 287 00:15:17,000 --> 00:15:23,000 >> Akhirnya, di sini aku akan menciptakan sebuah metode untuk mahasiswa saya. 288 00:15:23,000 --> 00:15:26,000 Aku menelepon metode saya, initWithName, dan itu membutuhkan waktu satu argumen, 289 00:15:26,000 --> 00:15:31,000 dan argumen bahwa adalah string, dan saya menyebutnya nama. 290 00:15:31,000 --> 00:15:35,000 Sekarang mari kita lihat bagaimana kita benar-benar diterapkan kelas ini. 291 00:15:35,000 --> 00:15:38,000 Di sini, sekarang aku dalam file m. Saya, 292 00:15:38,000 --> 00:15:40,000 m untuk implementasi, kurasa. 293 00:15:40,000 --> 00:15:44,000 Saya memiliki implementasi saya, akhirnya saya, dan di sini adalah di mana aku benar-benar mendefinisikan 294 00:15:44,000 --> 00:15:47,000 apa initWithName tidak. 295 00:15:47,000 --> 00:15:50,000 Saya memiliki initWithName, nama parameter saya, dan kemudian ini 296 00:15:50,000 --> 00:15:53,000 adalah di mana saya benar-benar menciptakan mahasiswa, 297 00:15:53,000 --> 00:15:56,000 dan jadi ini adalah sedikit samar, tapi ini adalah jenis boilerplate 298 00:15:56,000 --> 00:15:58,000 yang ingin Anda sertakan dalam konstruktor Anda. 299 00:15:58,000 --> 00:16:02,000 Fungsi inisialisasi sini, initWithName, adalah jenis konstruktor. 300 00:16:02,000 --> 00:16:05,000 Anda pada dasarnya membangun objek mahasiswa baru 301 00:16:05,000 --> 00:16:07,000 dan mungkin mengirimkan beberapa data di dalamnya. 302 00:16:07,000 --> 00:16:11,000 Hal pertama yang ingin saya lakukan adalah saya ingin memanggil init pada hal super. 303 00:16:11,000 --> 00:16:15,000 >> Ingat bahwa ketika aku berkata kembali ke sini dalam file h. 304 00:16:15,000 --> 00:16:21,000 bahwa segala sesuatu NSObject yang memiliki mahasiswa juga memiliki. 305 00:16:21,000 --> 00:16:24,000 Itu berarti ketika saya membuat seorang mahasiswa apa yang saya juga perlu lakukan adalah 306 00:16:24,000 --> 00:16:28,000 pastikan bahwa NSObject bahwa aku mewarisi semua itu data dari 307 00:16:28,000 --> 00:16:32,000 juga diinisialisasi dengan benar. 308 00:16:32,000 --> 00:16:36,000 Apa yang saya harus katakan adalah super ini benar-benar akan mengacu pada kelas induk 309 00:16:36,000 --> 00:16:39,000 bahwa aku mewarisi dari, jadi saya ingin memastikan bahwa saya menginisialisasi 310 00:16:39,000 --> 00:16:43,000 segala sesuatu yang saya tergantung pada sebelum saya mulai mencoba untuk menggunakannya. 311 00:16:43,000 --> 00:16:46,000 Lalu jika itu diinisialisasi dengan benar ini hanya seperti mengatakan jika malloc 312 00:16:46,000 --> 00:16:50,000 tidak kembali null maka saya bisa mulai menetapkan beberapa properti. 313 00:16:50,000 --> 00:16:54,000 >> Dalam JavaScript dan PHP kami telah kata kunci ini disebut ini, 314 00:16:54,000 --> 00:16:58,000 dan ini disebut contoh saat ini kelas. 315 00:16:58,000 --> 00:17:00,000 Di Objective-C kita sebut diri ini. 316 00:17:00,000 --> 00:17:04,000 Ketika saya mengatakan self.name, yang berarti bahwa objek 317 00:17:04,000 --> 00:17:07,000 Saya baru saja membuat ketika aku berkata alloc init mahasiswa, 318 00:17:07,000 --> 00:17:09,000 yang akan memberikan kembali sebuah objek. 319 00:17:09,000 --> 00:17:12,000 Itu berarti saya ingin mengatur nama objek yang 320 00:17:12,000 --> 00:17:15,000 untuk apa pun saya hanya berlalu masuk 321 00:17:15,000 --> 00:17:18,000 Sama seperti di C, kita mengakses anggota dengan dot ini, 322 00:17:18,000 --> 00:17:21,000 sehingga self.name mengatakan nama dari objek siswa 323 00:17:21,000 --> 00:17:24,000 sekarang akan menjadi apa pun yang Anda hanya berlalu masuk 324 00:17:24,000 --> 00:17:28,000 Dan jadi akhirnya, saya bisa kembali jadi saya benar-benar mendapatkan kembali sesuatu. 325 00:17:28,000 --> 00:17:30,000 >> Pertanyaan? 326 00:17:30,000 --> 00:17:34,000 Oke, jadi diri ini = Super init, 327 00:17:34,000 --> 00:17:37,000 jika Anda tidak benar-benar memahami hal warisan jangan khawatir. 328 00:17:37,000 --> 00:17:40,000 Hanya tahu bahwa jika Anda pernah ingin membuat metode sendiri init Anda hanya 329 00:17:40,000 --> 00:17:42,000 melakukan itu, dan Anda akan baik untuk pergi. 330 00:17:42,000 --> 00:17:44,000 Ya >> [Siswa]. Apa artinya jika diri? 331 00:17:44,000 --> 00:17:49,000 Ini berarti ketika kita malloc sesuatu yang kita selalu diperiksa apakah itu sama dengan nol, 332 00:17:49,000 --> 00:17:51,000 dan jika itu nol, maka kita keluar. 333 00:17:51,000 --> 00:17:55,000 Ini adalah hal yang sama, karena jika ini nol kembali, maka kita mungkin akan kesalahan seg 334 00:17:55,000 --> 00:17:57,000 jika kita mulai mencoba untuk memanipulasi itu. 335 00:17:57,000 --> 00:18:01,000 Itulah siswa kelas kami. 336 00:18:01,000 --> 00:18:03,000 Itu berarti kita bisa menginisialisasi siswa kami dalam salah satu dari dua cara. 337 00:18:03,000 --> 00:18:08,000 Jika saya mengatakan alloc mahasiswa init Saya tidak menggunakan metode itu bahwa saya hanya menulis, 338 00:18:08,000 --> 00:18:11,000 dan sebagai gantinya saya hanya dapat mengatakan alice.name, 339 00:18:11,000 --> 00:18:14,000 dan sekarang aku akan menetapkan bahwa nama properti. 340 00:18:14,000 --> 00:18:17,000 >> Demikian pula, jika saya ingin menggunakan metode initWithName 341 00:18:17,000 --> 00:18:20,000 Saya hanya dapat mengatakan alokasi, dan kemudian daripada mengatakan init 342 00:18:20,000 --> 00:18:24,000 Aku akan memanggil metode yang saya buat, dan aku akan lulus dalam Bob. 343 00:18:24,000 --> 00:18:30,000 Pada titik ini, ini Bob objek memiliki nama sama dengan Bob. 344 00:18:30,000 --> 00:18:35,000 Oke, di sini saya menggunakan bahwa NSMutableArray yang kita lihat sebelumnya. 345 00:18:35,000 --> 00:18:38,000 Saya mengalokasikan space.Then saya menginisialisasi sebuah array baru. 346 00:18:38,000 --> 00:18:40,000 Aku akan menambahkan 2 hal untuk itu. 347 00:18:40,000 --> 00:18:43,000 Array ini sekarang memegang benda siswa. 348 00:18:43,000 --> 00:18:46,000 Perhatikan bahwa tempat saya harus mengatakan ini adalah array dari siswa. 349 00:18:46,000 --> 00:18:48,000 Saya mengatakan itu sebuah array, periode. 350 00:18:48,000 --> 00:18:50,000 Lalu aku dapat menempatkan apapun di dalamnya yang saya inginkan. 351 00:18:50,000 --> 00:18:52,000 Di sini saya memiliki 2 objek. 352 00:18:52,000 --> 00:18:56,000 >> Akhirnya, saya memiliki objek lain di sini, TF ini. 353 00:18:56,000 --> 00:18:59,000 Di sini di TF.h pada dasarnya hal yang sama. 354 00:18:59,000 --> 00:19:01,000 Aku mewarisi dari NSObject, dan omong-omong, 355 00:19:01,000 --> 00:19:03,000 ketika Anda membuat kelas ini semua dilakukan untuk Anda, 356 00:19:03,000 --> 00:19:06,000 semacam ini boilerplate antarmuka. 357 00:19:06,000 --> 00:19:08,000 Ini memiliki properti siswa. 358 00:19:08,000 --> 00:19:15,000 Saya punya beberapa metode di sini yang tidak benar-benar melakukan banyak, 359 00:19:15,000 --> 00:19:18,000 dan sehingga berarti setelah saya membuat objek TF 360 00:19:18,000 --> 00:19:23,000 Saya bisa menyebutnya kelas metode di atasnya seperti ini. 361 00:19:23,000 --> 00:19:26,000 Setiap pertanyaan tentang Objective-C sintaks sebelum kita mulai bergerak ke lagi 362 00:19:26,000 --> 00:19:30,000 menarik apps hal pembangunan? 363 00:19:30,000 --> 00:19:34,000 >> Oke, jadi mari kita benar-benar membuat sebuah aplikasi iPhone. 364 00:19:34,000 --> 00:19:39,000 Kelas inti yang Anda akan menggunakan dalam aplikasi iPhone Anda disebut pengendali tampilan, 365 00:19:39,000 --> 00:19:42,000 dan pandangan controller pada dasarnya merupakan satu layar 366 00:19:42,000 --> 00:19:46,000 dalam aplikasi Anda, jadi jika saya pada aplikasi musik, misalnya, 367 00:19:46,000 --> 00:19:50,000 satu controller pandangan bisa mewakili pandangan di mana saya melihat semua lagu di iPhone. 368 00:19:50,000 --> 00:19:53,000 Controller lain bisa melihat ketika saya klik lagu dan mulai bermain 369 00:19:53,000 --> 00:19:55,000 atau karena saya pengeboran ke dalam seniman. 370 00:19:55,000 --> 00:19:59,000 Masing-masing layar yang berbeda dapat direpresentasikan sebagai pengontrol pandangan yang berbeda, 371 00:19:59,000 --> 00:20:04,000 dan pandangan controller benar-benar hanya sebuah kelas yang mengatakan bagaimana layar ini bekerja. 372 00:20:04,000 --> 00:20:07,000 Hal dalam pandangan controller, kita akan memiliki sifat, 373 00:20:07,000 --> 00:20:10,000 sehingga hal-hal seperti tombol akan menjadi milik kontroler pandangan kita. 374 00:20:10,000 --> 00:20:13,000 >> Kami juga akan memiliki metode, dan ini pada dasarnya event handler. 375 00:20:13,000 --> 00:20:16,000 Metode ini mengatakan bila Anda menekan tombol ini 376 00:20:16,000 --> 00:20:19,000 Saya ingin melakukan sesuatu, dan akhirnya, sekali lagi, 377 00:20:19,000 --> 00:20:24,000 kita akan menggunakan kata kunci ini untuk mengakses diri contoh saat. 378 00:20:24,000 --> 00:20:29,000 Untuk membangun interface di iOS sebenarnya sangat, sangat mudah. 379 00:20:29,000 --> 00:20:32,000 Mereka memiliki hambatan ini bagus dan antarmuka penurunan disebut Interface Builder, 380 00:20:32,000 --> 00:20:37,000 dan 2 inti konsep bahwa kawat up Objective C-Anda ke 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 mengatakan bahwa jika Anda mendeklarasikan sebuah properti yang tombol, 383 00:20:44,000 --> 00:20:47,000 dan Anda ingin menghubungkan itu ke sesuatu di UI sebenarnya, 384 00:20:47,000 --> 00:20:49,000 Anda akan mengatakan itu sebuah outlet. 385 00:20:49,000 --> 00:20:51,000 Demikian pula, jika Anda ingin untuk mewakili event handler 386 00:20:51,000 --> 00:20:54,000 maka Anda akan mengatakan itu tindakan. 387 00:20:54,000 --> 00:20:57,000 >> Untuk benar-benar kawat sampai ini representasi grafis 388 00:20:57,000 --> 00:21:00,000 dan kode Anda itu benar-benar, benar-benar sederhana. 389 00:21:00,000 --> 00:21:03,000 Jika Anda ingin melampirkan IBOutlet, yang harus Anda lakukan adalah Anda mengendalikan klik, 390 00:21:03,000 --> 00:21:05,000 dan kita akan melihat contoh ini benar-benar cepat. 391 00:21:05,000 --> 00:21:07,000 Anda mengontrol klik tulisan Lihat Controller. 392 00:21:07,000 --> 00:21:09,000 Anda akan menyeret ke antarmuka, atau sebaliknya, 393 00:21:09,000 --> 00:21:13,000 jika Anda ingin menghubungkan sebuah event handler Anda akan tarik dari antarmuka 394 00:21:13,000 --> 00:21:15,000 ke arah lain. 395 00:21:15,000 --> 00:21:20,000 Mari kita lihat contoh IOS benar-benar sederhana. 396 00:21:20,000 --> 00:21:23,000 >> Mari kita membuat proyek baru. 397 00:21:23,000 --> 00:21:25,000 Aku akan datang ke sini untuk Aplikasi, 398 00:21:25,000 --> 00:21:28,000 dan aku akan klik Aplikasi View Single. 399 00:21:28,000 --> 00:21:31,000 Aku akan klik next. Aku akan memberikan proyek saya nama. 400 00:21:31,000 --> 00:21:33,000 Saya akan menyebutnya Hello. 401 00:21:33,000 --> 00:21:36,000 Menariknya, Apple menganggap Anda sedang menciptakan produk 402 00:21:36,000 --> 00:21:38,000 sehingga Anda bisa menjualnya dan mereka dapat menghasilkan uang. 403 00:21:38,000 --> 00:21:41,000 Di sini aku akan mengatakan bahwa ini adalah sebuah aplikasi iPhone. 404 00:21:41,000 --> 00:21:44,000 Anda dapat membuat sebuah aplikasi iPad, atau jika Anda ingin membuat salah satu aplikasi 405 00:21:44,000 --> 00:21:47,000 yang mendukung kedua perangkat Anda dapat melakukannya juga. 406 00:21:47,000 --> 00:21:49,000 Ini adalah apa yang Anda inginkan checkmarks Anda terlihat seperti. 407 00:21:49,000 --> 00:21:51,000 >> Anda ingin menggunakan storyboard, yang akan kita lihat nanti, 408 00:21:51,000 --> 00:21:54,000 dan Anda pasti ingin menggunakan referensi menghitung otomatis, 409 00:21:54,000 --> 00:21:58,000 yang merupakan fitur bagus yang mencegah Anda dari keharusan untuk mengatakan malloc dan bebas. 410 00:21:58,000 --> 00:22:03,000 Kecuali Anda ingin menelepon malloc dan bebas, saya akan meninggalkan diperiksa ini. 411 00:22:03,000 --> 00:22:07,000 Saya akan klik next, dan akhirnya, ini akan bertanya kepada saya di mana saya ingin menyimpannya. 412 00:22:07,000 --> 00:22:14,000 Aku akan memukul membuat, dan di sini kita pergi. 413 00:22:14,000 --> 00:22:16,000 Saya membuat sebuah proyek baru. 414 00:22:16,000 --> 00:22:19,000 Di sini di sebelah kiri adalah semua file yang ada dalam proyek saya, 415 00:22:19,000 --> 00:22:22,000 dan perhatikan bahwa saya punya sejumlah, dan aku bahkan tidak melakukan apa-apa. 416 00:22:22,000 --> 00:22:24,000 IOS 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 controller pandangan pertama saya, 419 00:22:30,000 --> 00:22:32,000 sehingga layar pertama dalam aplikasi saya. 420 00:22:32,000 --> 00:22:34,000 Sekarang kita tahu apa yang dikatakan. 421 00:22:34,000 --> 00:22:36,000 Kita mengatakan bahwa saya menyebut ini ViewController kelas, 422 00:22:36,000 --> 00:22:40,000 dan ViewController yang melakukan segala sesuatu yang UIViewController tidak, 423 00:22:40,000 --> 00:22:43,000 dan ini, sekali lagi, adalah beberapa kelas menulis bahwa Apple yang melakukan banyak hal berguna bagi kita 424 00:22:43,000 --> 00:22:46,000 seperti tampilan layar. 425 00:22:46,000 --> 00:22:50,000 Berikut ini adalah di mana saya benar-benar dapat mulai mendefinisikan apa controller pandangan saya tidak, 426 00:22:50,000 --> 00:22:52,000 dan ternyata saya benar-benar tidak membutuhkan semua ini. 427 00:22:52,000 --> 00:22:55,000 Ini adalah kode boilerplate bahwa Apple memberi saya secara gratis. 428 00:22:55,000 --> 00:22:59,000 Aku membutuhkan baris pertama, atau saya tidak punya kelas, 429 00:22:59,000 --> 00:23:02,000 sehingga kami bisa menyingkirkan itu dan menyingkirkan ini. 430 00:23:02,000 --> 00:23:05,000 Oke, jadi ini adalah layar kosong saya. 431 00:23:05,000 --> 00:23:08,000 >> Sekarang mari kita klik pada MainStoryboard.storyboard ini, 432 00:23:08,000 --> 00:23:11,000 dan ini adalah di mana ia mulai mendapatkan menarik. 433 00:23:11,000 --> 00:23:14,000 Ini merupakan layar pertama di app saya. 434 00:23:14,000 --> 00:23:17,000 Jika saya ingin menambahkan tombol, dalam HTML saya harus membuat tag tombol. 435 00:23:17,000 --> 00:23:20,000 Di Android Anda harus membuat tag tombol, 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 yang satu ini 3 di sini di mana dikatakan Objects, 438 00:23:27,000 --> 00:23:31,000 dan saya dapat menggulir ke bawah, atau saya bisa mulai mencari tombol. 439 00:23:31,000 --> 00:23:35,000 Dan lihat, tombol, jadi jika saya benar-benar drag dan drop hak ini ada, 440 00:23:35,000 --> 00:23:38,000 Saya baru saja menambahkan tombol untuk layar ini di app saya. 441 00:23:38,000 --> 00:23:41,000 Jika saya ingin mengubah teks, saya dapat klik dua kali itu, 442 00:23:41,000 --> 00:23:47,000 mengatakan sesuatu menarik seperti "Tekan Me." 443 00:23:47,000 --> 00:23:51,000 Oke, sekarang jika saya menjalankan aplikasi ini, jadi kami kompilasi, 444 00:23:51,000 --> 00:23:54,000 sehingga untuk menjalankannya saya klik tombol putar di kiri atas, dan ada app saya. 445 00:23:54,000 --> 00:23:58,000 Saya tidak melakukan apa-apa, dan aku punya aplikasi iPhone manis mencari. 446 00:23:58,000 --> 00:24:01,000 Jika saya ingin menghentikannya, Anda dapat mengklik tombol stop 447 00:24:01,000 --> 00:24:03,000 karena itu lebih menyenangkan. 448 00:24:03,000 --> 00:24:07,000 >> Mari kita mengatakan bahwa saya benar-benar ingin sesuatu terjadi ketika saya tekan tombol ini. 449 00:24:07,000 --> 00:24:09,000 Untuk melakukan itu apa yang harus saya lakukan adalah saya harus membuat 450 00:24:09,000 --> 00:24:13,000 handler baru peristiwa atau tindakan. 451 00:24:13,000 --> 00:24:16,000 Itu berarti bahwa saya harus membuat beberapa metode yang saya ingin disebut 452 00:24:16,000 --> 00:24:18,000 ketika saya menekan tombol, jadi mari kita membuat metode baru. 453 00:24:18,000 --> 00:24:20,000 Saya dalam ViewController.h. 454 00:24:20,000 --> 00:24:22,000 Saya harus mengatakan bahwa metode ada. 455 00:24:22,000 --> 00:24:26,000 Aku butuh tanda hubung pertama karena saya akan memanggil ini pada controller tampilan. 456 00:24:26,000 --> 00:24:28,000 Saya perlu memberikan tipe. 457 00:24:28,000 --> 00:24:31,000 Jenis ini akan menjadi hal yang IBAction yang kita lihat sebelumnya. 458 00:24:31,000 --> 00:24:35,000 Ini adalah event handler, sehingga akan kembali suatu IBAction, 459 00:24:35,000 --> 00:24:38,000 dan ini adalah sebuah petunjuk untuk Xcode untuk mengatakan bahwa 460 00:24:38,000 --> 00:24:40,000 ini adalah sesuatu yang saya ingin mentransfer sesuatu untuk. 461 00:24:40,000 --> 00:24:45,000 Saya bisa memberikan nama, seperti buttonPressed, titik koma. 462 00:24:45,000 --> 00:24:48,000 >> Sekarang saya sudah dinyatakan sebagai metode baru dalam kelas saya. 463 00:24:48,000 --> 00:24:50,000 Saya sudah mengatakan metode ini harus ada. 464 00:24:50,000 --> 00:24:53,000 Sekarang mari kita datang ke ViewController.m, 465 00:24:53,000 --> 00:24:56,000 dan katakanlah apa metode ini bisa dilakukan. 466 00:24:56,000 --> 00:25:03,000 Jika saya mulai mengetik, misalnya, (void) buttonPressed 467 00:25:03,000 --> 00:25:06,000 pemberitahuan Xcode 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 Perhatikan di sini bahwa dalam file. Saya juga dapat mengatakan batal, 470 00:25:12,000 --> 00:25:15,000 dan ini adalah karena IBAction yang sebenarnya bukan tipe. 471 00:25:15,000 --> 00:25:19,000 Itu benar-benar hashtag didefinisikan suatu tempat untuk menjadi kehampaan, 472 00:25:19,000 --> 00:25:22,000 dan sekali lagi, ini hanyalah sebuah petunjuk untuk Xcode yang mengatakan 473 00:25:22,000 --> 00:25:25,000 Saya ingin ini menjadi sebuah event handler, dan kita akan melihat mengapa hanya dalam satu detik. 474 00:25:25,000 --> 00:25:28,000 Ketika tombol ini ditekan aku akan melakukan sesuatu yang menjengkelkan 475 00:25:28,000 --> 00:25:30,000 seperti menampilkan popup. 476 00:25:30,000 --> 00:25:35,000 >> Untuk melakukan itu saya bisa membuat sebuah instance baru dari kelas ini disebut UIAlertView, 477 00:25:35,000 --> 00:25:39,000 dan ini adalah kelas bahwa Apple menulis bahwa akan menampilkan popup menjengkelkan. 478 00:25:39,000 --> 00:25:43,000 Kita akan menyebutnya peringatan popup, dan saya memiliki 2 langkah, ingat, untuk menciptakan obyek ini. 479 00:25:43,000 --> 00:25:46,000 Hal pertama yang harus saya lakukan adalah mengalokasikan ruang. 480 00:25:46,000 --> 00:25:48,000 Saya ingin UIAlertView. 481 00:25:48,000 --> 00:25:51,000 Saya ingin mengalokasikan ruang. Itulah metode pertama saya. 482 00:25:51,000 --> 00:25:53,000 Metode berikutnya saya adalah saya ingin menginisialisasi, 483 00:25:53,000 --> 00:25:58,000 dan jadi saya memiliki metode ini, besar panjang yang disebut initWithTitle. 484 00:25:58,000 --> 00:26:01,000 Itu pada dasarnya akan mengontrol apa yang pop ini mengatakan. 485 00:26:01,000 --> 00:26:04,000 Judul popup saya bisa halo. 486 00:26:04,000 --> 00:26:08,000 Pesan ini dapat popup "Ini adalah iOS." 487 00:26:08,000 --> 00:26:10,000 Delegasi hal, saya tidak tahu apa itu. 488 00:26:10,000 --> 00:26:13,000 Katakanlah apa-apa. 489 00:26:13,000 --> 00:26:18,000 Sekarang tombol yang akan muncul bisa mengatakan sesuatu seperti "Ini pasti adalah," 490 00:26:18,000 --> 00:26:24,000 dan aku tidak benar-benar ingin ada tombol lain, jadi mari kita menghapus dan menutup braket. 491 00:26:24,000 --> 00:26:27,000 >> Oke, saya membuat tambahan satu. Di sana kami pergi. 492 00:26:27,000 --> 00:26:30,000 Ini adalah bagaimana saya bisa membuat pop-up baru. 493 00:26:30,000 --> 00:26:35,000 Jika saya ingin benar-benar menunjukkan popup saya ingin memanggil metode pertunjukan. 494 00:26:35,000 --> 00:26:38,000 Untuk melakukan itu saya dapat mengatakan waspada dan pertunjukan, 495 00:26:38,000 --> 00:26:40,000 dan lagi, autocomplete adalah super bagus. 496 00:26:40,000 --> 00:26:42,000 Jika saya lupa apa itu, jika saya hanya mengetik di s, 497 00:26:42,000 --> 00:26:45,000 Aku bisa menelusuri di sini untuk mencari tahu apa itu, 498 00:26:45,000 --> 00:26:48,000 dan filter baik. 499 00:26:48,000 --> 00:26:52,000 Sekarang ini saya buat popup baru. 500 00:26:52,000 --> 00:26:55,000 Kami akan kembali ke apa yang mendelegasikan berarti kemudian, 501 00:26:55,000 --> 00:26:58,000 dan sekarang saya ingin mengatakan saya ingin metode ini untuk ditembakkan 502 00:26:58,000 --> 00:27:01,000 ketika saya menekan tombol, jadi aku akan kembali ke storyboard saya, 503 00:27:01,000 --> 00:27:04,000 dan saya ingin sekarang melampirkan IBAction ini. 504 00:27:04,000 --> 00:27:06,000 Hal pertama yang Anda ingin lakukan adalah mengklik tombol. 505 00:27:06,000 --> 00:27:08,000 Ketika saya menekan tombol ini saya ingin sesuatu terjadi. 506 00:27:08,000 --> 00:27:10,000 Aku tidak akan tahan kendali. 507 00:27:10,000 --> 00:27:13,000 Aku akan klik dan tarik dari tombol 508 00:27:13,000 --> 00:27:15,000 untuk di sini di mana dikatakan Lihat Controller. 509 00:27:15,000 --> 00:27:17,000 Kita bisa melihat bahwa itu baik menyala. 510 00:27:17,000 --> 00:27:22,000 >> Jika aku membiarkan pergi dengan mouse saya, saya sekarang memiliki ini popup di sini di mana saya memiliki beberapa pilihan. 511 00:27:22,000 --> 00:27:24,000 Salah satunya adalah peristiwa yang saya dapat mendaftar. 512 00:27:24,000 --> 00:27:28,000 Ini semua metode tersebut saya dideklarasikan pada file h saya sebagai IBActions. 513 00:27:28,000 --> 00:27:31,000 Ini adalah bagaimana Xcode tahu apa yang harus muncul dalam daftar ini kecil, 514 00:27:31,000 --> 00:27:33,000 jadi itu hanya sebuah petunjuk. 515 00:27:33,000 --> 00:27:37,000 Jika saya klik pada tombol ditekan, saya sekarang terdaftar event handler. 516 00:27:37,000 --> 00:27:41,000 Dalam JavaScript kita harus mengatakan bahwa saya memiliki beberapa kode yang mendaftarkan event handler. 517 00:27:41,000 --> 00:27:43,000 Di Objective-C itu benar-benar 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 ketika saya menekan tombol pengendali event saya akan memecat, 520 00:27:49,000 --> 00:27:51,000 dan aku akan mendapatkan ini popup. 521 00:27:51,000 --> 00:27:54,000 Super, super sederhana di sana. 522 00:27:54,000 --> 00:27:57,000 >> Jika Anda pernah ingin melihat semua peristiwa yang terjadi harus didaftarkan 523 00:27:57,000 --> 00:28:00,000 pada komponen jika saya klik pada tombol ini 524 00:28:00,000 --> 00:28:02,000 dan saya datang ke sini ke sisi kanan 525 00:28:02,000 --> 00:28:05,000 pertama Anda dapat melihat di sini saya bisa melakukan hal-hal seperti jenis tombol, 526 00:28:05,000 --> 00:28:08,000 jadi jika Anda ingin salah satu dari mereka saya atau tombol kontak add 527 00:28:08,000 --> 00:28:10,000 atau apa pun. 528 00:28:10,000 --> 00:28:13,000 Jika saya ingin melihat semua peristiwa yang ada di tombol ini 529 00:28:13,000 --> 00:28:16,000 jika saya datang jauh-jauh ke sini ke sisi kanan 530 00:28:16,000 --> 00:28:19,000 kita bisa lihat di sini pada acara saya memiliki semua peristiwa yang berbeda. 531 00:28:19,000 --> 00:28:23,000 Saya dapat menekan tombol, ketika saya melepaskan tombol, ketika saya dua kali lipat keran atau apa pun, 532 00:28:23,000 --> 00:28:26,000 dan yang saya hanya terdaftar adalah peristiwa ini disebut Sentuh Up Inside, 533 00:28:26,000 --> 00:28:29,000 dan ini mengatakan bahwa segera setelah jari saya datang dari tombol 534 00:28:29,000 --> 00:28:32,000 bahwa acara akan api, dan itulah apa yang baru saja terjadi. 535 00:28:32,000 --> 00:28:36,000 Ini adalah jenis acara tombol ditekan standar. 536 00:28:36,000 --> 00:28:39,000 >> Ada pertanyaan sejauh ini? 537 00:28:39,000 --> 00:28:43,000 Oke, itu bagaimana kita dapat mulai untuk kawat hal-hal dalam kode kita 538 00:28:43,000 --> 00:28:46,000 ke hal-hal dalam antarmuka kami. 539 00:28:46,000 --> 00:28:49,000 Ingat hal pertama yang kita harus lakukan adalah untuk menemukan kode, 540 00:28:49,000 --> 00:28:54,000 dan kemudian kita kabel sampai antarmuka untuk kode, 541 00:28:54,000 --> 00:28:57,000 dan ada app pertama kami. 542 00:28:57,000 --> 00:29:00,000 Oke, itu benar-benar keren, dan kami menciptakan tombol ini. 543 00:29:00,000 --> 00:29:03,000 Bagaimana jika kita tidak mau harus menciptakan sekelompok properti 544 00:29:03,000 --> 00:29:05,000 mewakili tombol ini? 545 00:29:05,000 --> 00:29:08,000 Misalnya, di Tac Toe Tic Saya memiliki 9 tombol, 546 00:29:08,000 --> 00:29:11,000 dan itu akan menjadi super, super menjengkelkan harus drag and drop 9 kali 547 00:29:11,000 --> 00:29:14,000 atau jika saya harus membuat Tic Tac Toe dengan 81 bukannya 9 548 00:29:14,000 --> 00:29:17,000 dan aku harus drag dan drop 81 kali, dan itu lumpuh. 549 00:29:17,000 --> 00:29:20,000 Apa yang dapat kita lakukan sebagai gantinya adalah banyak seperti HTML 550 00:29:20,000 --> 00:29:23,000 ketika kita memiliki hal-hal seperti ID dan nama dan kita dapat mencari hal-hal 551 00:29:23,000 --> 00:29:27,000 oleh ID mereka, ada gagasan serupa di IOS disebut tag. 552 00:29:27,000 --> 00:29:31,000 >> Tag hanyalah sebuah identifier numerik unik untuk komponen. 553 00:29:31,000 --> 00:29:34,000 Jika saya mengatakan ini memiliki tag dari 0, misalnya, 554 00:29:34,000 --> 00:29:38,000 jika saya membuat tombol dan memberikan tag dari 0, dan kita akan melihat bagaimana untuk melakukan itu hanya dalam satu detik, 555 00:29:38,000 --> 00:29:41,000 jika saya ingin mendapatkan tombol yang saya hanya bisa mengatakan saya ingin menelepon 556 00:29:41,000 --> 00:29:45,000 yang viewWithTag metode pada objek di sini, 557 00:29:45,000 --> 00:29:48,000 yang self.view, yang mewakili layar saat ini, misalnya. 558 00:29:48,000 --> 00:29:53,000 Jika saya sebut bahwa metode viewWithTag, aku akan menarik kembali tombol dengan tag 0. 559 00:29:53,000 --> 00:29:58,000 Mari kita lihat ini dengan bangunan Tac Toe Tic. 560 00:29:58,000 --> 00:30:01,000 Pertama, ini adalah storyboard saya. 561 00:30:01,000 --> 00:30:05,000 Saya telah membuat ini 10 tombol UI. 562 00:30:05,000 --> 00:30:07,000 Perhatikan mereka semua ukuran yang sama. 563 00:30:07,000 --> 00:30:11,000 Jika saya klik salah satu dari ini dan saya datang kembali ke sini pada sisi kanan 564 00:30:11,000 --> 00:30:15,000 Anda akan melihat saya disesuaikan font di sini, jadi saya membuat font sedikit lebih besar, 565 00:30:15,000 --> 00:30:19,000 tapi apa yang saya juga lakukan adalah saya set tag ini. 566 00:30:19,000 --> 00:30:23,000 Saya mengatakan bahwa ini memiliki tag dari 1, dan itulah kiri atas. 567 00:30:23,000 --> 00:30:26,000 >> Sekarang, jika saya klik tombol lain, seperti yang satu ini kedua di sini, 568 00:30:26,000 --> 00:30:29,000 sekarang Anda akan melihat bahwa tag saya adalah 2. 569 00:30:29,000 --> 00:30:32,000 Masing-masing tombol hanya memiliki tag yang unik, 570 00:30:32,000 --> 00:30:35,000 dan jadi ini nanti bagaimana aku akan mulai berinteraksi 571 00:30:35,000 --> 00:30:38,000 dengan aplikasi saya. 572 00:30:38,000 --> 00:30:40,000 Ini semua dalam satu controller tampilan, 573 00:30:40,000 --> 00:30:42,000 tapi di sini adalah apa yang kita miliki. 574 00:30:42,000 --> 00:30:44,000 Kami memiliki 3 properti di sini. 575 00:30:44,000 --> 00:30:49,000 Yang pertama dan yang terakhir akan mewakili keadaan papan saya. 576 00:30:49,000 --> 00:30:53,000 Pada dasarnya ini pertama adalah sebuah array yang mewakili mana Xs dan Os. 577 00:30:53,000 --> 00:30:57,000 Ini satu di sini memberitahu kita yang mendapat giliran. 578 00:30:57,000 --> 00:31:01,000 Anda akan melihat bahwa saya juga memiliki hal-hal di sini. 579 00:31:01,000 --> 00:31:05,000 Sebelum ketika kita menyatakan sifat kami memberi mereka nama dan tipe. 580 00:31:05,000 --> 00:31:08,000 Kami juga bisa memberikan beberapa informasi tambahan di sini. 581 00:31:08,000 --> 00:31:11,000 Ini pertama mengatakan nonatomic, dan apa ini mengatakan 582 00:31:11,000 --> 00:31:16,000 pada dasarnya hanya satu hal akan pernah mencoba untuk mengakses variabel ini pada suatu waktu. 583 00:31:16,000 --> 00:31:19,000 Anda bisa melakukan aplikasi yang lebih kompleks yang multi-threaded, 584 00:31:19,000 --> 00:31:22,000 dan begitu kembali Scratch kami memiliki benang yang berbeda, 585 00:31:22,000 --> 00:31:25,000 dan sprite yang berbeda bisa melakukan hal yang berbeda pada waktu yang sama. 586 00:31:25,000 --> 00:31:29,000 >> Jika itu tidak terjadi, yang tidak dalam apa pun yang kita akan melihat, 587 00:31:29,000 --> 00:31:33,000 jika kita mengatakan nonatomic itu benar-benar akan membuat hal-hal sedikit lebih cepat. 588 00:31:33,000 --> 00:31:37,000 Kami juga memiliki hal ini disebut assign, kuat, atau lemah. 589 00:31:37,000 --> 00:31:40,000 Ini menetapkan hanya mengatakan bahwa ini adalah tipe standar. 590 00:31:40,000 --> 00:31:43,000 Ini bukan suatu obyek atau pointer karena ini hanya bool, 591 00:31:43,000 --> 00:31:46,000 sehingga bool dibangun ke Objective-C. 592 00:31:46,000 --> 00:31:49,000 Ini mengatakan jangan mencoba untuk melakukan sesuatu yang mewah dengan pointer di sini. 593 00:31:49,000 --> 00:31:51,000 Ini adalah scaler tua biasa. 594 00:31:51,000 --> 00:31:54,000 Kuat dan lemah, ini yang lemah mengatakan bahwa sebenarnya 595 00:31:54,000 --> 00:31:57,000 Saya ingin ini akan menunjuk ke sesuatu di controller tampilan. 596 00:31:57,000 --> 00:32:00,000 Aku tidak akan benar-benar mengalokasikan atau init ini sendiri. 597 00:32:00,000 --> 00:32:04,000 Pembangun antarmuka, ketika saya menjalankan aplikasi, akan menangani semua inisialisasi itu. 598 00:32:04,000 --> 00:32:07,000 Jika saya katakan lemah, yang mengatakan orang lain yang akan menciptakan ini. 599 00:32:07,000 --> 00:32:09,000 Jika saya mengatakan kuat, ini mengatakan bahwa aku akan menjadi orang 600 00:32:09,000 --> 00:32:12,000 yang menciptakan obyek papan, 601 00:32:12,000 --> 00:32:14,000 dan jadi di sini saya memiliki metode yang lebih banyak di sini, 602 00:32:14,000 --> 00:32:18,000 Misalnya, tindakan ketika tombol ditekan permainan baru, 603 00:32:18,000 --> 00:32:20,000 tindakan ketika salah satu tombol 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 terlalu banyak logika Toe Tic Tac, 606 00:32:26,000 --> 00:32:30,000 meskipun itu sangat menarik, tapi mari kita lihat 607 00:32:30,000 --> 00:32:33,000 beberapa hal yang dapat kita lakukan dalam IOS. 608 00:32:33,000 --> 00:32:35,000 Metode permainan baru akan dipecat 609 00:32:35,000 --> 00:32:37,000 setiap kali saya tekan tombol permainan baru. 610 00:32:37,000 --> 00:32:41,000 Untuk menghubungkan bahwa sampai saya hanya datang ke storyboard saya. 611 00:32:41,000 --> 00:32:43,000 Saya mengklik permainan baru. 612 00:32:43,000 --> 00:32:47,000 Jika saya datang ke sini ke kanan aku dapat melihat bahwa 613 00:32:47,000 --> 00:32:50,000 Sentuh Up dalam ditransfer ke metode newGame. 614 00:32:50,000 --> 00:32:53,000 Itulah mengapa hal ini akan dipecat. 615 00:32:53,000 --> 00:32:56,000 Metode newGame akan melakukan set up beberapa. 616 00:32:56,000 --> 00:32:59,000 Ini akan mengatakan saya ingin Anda untuk membersihkan negara dari papan. 617 00:32:59,000 --> 00:33:01,000 Ini adalah metode yang bagus di array bisa berubah. 618 00:33:01,000 --> 00:33:03,000 Ini akan mengatakan itu sekarang giliran X, 619 00:33:03,000 --> 00:33:07,000 dan sekarang aku akan mengambil keuntungan dari hal ini viewWithTag. 620 00:33:07,000 --> 00:33:11,000 >> Saya tahu bahwa saya memiliki tombol tag 1-9, 621 00:33:11,000 --> 00:33:13,000 dan itu sesuatu yang saya sewenang-wenang memilih. 622 00:33:13,000 --> 00:33:15,000 Jika saya ingin mengatur teks dari setiap tombol menjadi kosong 623 00:33:15,000 --> 00:33:17,000 karena saya hanya memulai permainan baru dan saya tidak ingin ada 624 00:33:17,000 --> 00:33:20,000 Xs atau Os yang akan tersisa saya bisa melakukan ini. 625 00:33:20,000 --> 00:33:24,000 Saya dapat mengatakan saya ingin tampilan dengan tag, 1, 2, 3, 4 dan sebagainya. 626 00:33:24,000 --> 00:33:27,000 Ini akan menarik sebuah tombol yang berbeda setiap kali. 627 00:33:27,000 --> 00:33:30,000 Di sini aku akan dilemparkan ke UIButton. 628 00:33:30,000 --> 00:33:33,000 Sama seperti kita bisa dilemparkan ints untuk mengapung dan sebaliknya 629 00:33:33,000 --> 00:33:37,000 ini mengatakan bahwa saya ingin melemparkan ini UIButton. 630 00:33:37,000 --> 00:33:40,000 Itu berarti jenis ini akan menjadi * UIButton 631 00:33:40,000 --> 00:33:43,000 karena pointer, tapi jangan khawatir, mereka tidak menakutkan lagi. 632 00:33:43,000 --> 00:33:47,000 >> Setelah saya memiliki tombol ini aku akan memanggil metode di atasnya. 633 00:33:47,000 --> 00:33:50,000 Metode ini disebut setTitle forState, dan jadi ini mengatakan 634 00:33:50,000 --> 00:33:53,000 Saya ingin mengatur teks tombol untuk menjadi string kosong, 635 00:33:53,000 --> 00:33:57,000 dan saya ingin menjadi string kosong ketika itu tidak ditekan. 636 00:33:57,000 --> 00:34:01,000 Jika saya menggunakan metode ini, saya dapat mengubah teks tombol 637 00:34:01,000 --> 00:34:04,000 segera setelah seseorang hits itu, tapi kami ingin mengatakan ketika tombol hanya duduk di sana 638 00:34:04,000 --> 00:34:07,000 Saya ingin teks yang akan kosong. 639 00:34:07,000 --> 00:34:10,000 Akhirnya, kita akan menginisialisasi papan saya, 640 00:34:10,000 --> 00:34:12,000 dan aku akan mengatakan bahwa segala sesuatu saat ini di 0, 641 00:34:12,000 --> 00:34:15,000 sehingga forum ini anggota berubah adalah array bisa berubah, 642 00:34:15,000 --> 00:34:21,000 yang berarti saya dapat memanggil metode addObject dan hanya di dalam 0 dari itu. 643 00:34:21,000 --> 00:34:23,000 Itulah yang terjadi ketika saya membuat sebuah permainan baru. 644 00:34:23,000 --> 00:34:25,000 >> Mari kita lihat satu lagi. 645 00:34:25,000 --> 00:34:28,000 Metode ini di sini adalah IBAction yang akan ditekan 646 00:34:28,000 --> 00:34:31,000 setiap kali salah satu kotak ditekan. 647 00:34:31,000 --> 00:34:33,000 Sekarang kita memiliki beberapa Tic Tac Toe logika di sini. 648 00:34:33,000 --> 00:34:36,000 Kami mencari tahu giliran adalah, 649 00:34:36,000 --> 00:34:39,000 dan berdasarkan bahwa kami baik menetapkan X atau O, 650 00:34:39,000 --> 00:34:43,000 tapi kami melihat bahwa kita menggunakan kembali ini event handler yang sama 651 00:34:43,000 --> 00:34:45,000 untuk setiap satu dari tombol-tombol. 652 00:34:45,000 --> 00:34:49,000 Itu berarti bahwa saya tidak memiliki metode untuk tombol kiri atas, 653 00:34:49,000 --> 00:34:52,000 metode yang berbeda untuk tombol kanan bawah, meskipun saya bisa melakukan itu. 654 00:34:52,000 --> 00:34:54,000 Itu tidak akan benar-benar menjadi desain yang baik. 655 00:34:54,000 --> 00:34:57,000 Apa yang saya lakukan di sini adalah aku benar-benar akan menentukan 656 00:34:57,000 --> 00:35:00,000 apa tag dari tombol yang ditekan adalah. 657 00:35:00,000 --> 00:35:04,000 Anda melihat bahwa metode bermain mengambil satu argumen. 658 00:35:04,000 --> 00:35:07,000 Ini disebut pengirim, dan apa pengirim adalah pengirim akan 659 00:35:07,000 --> 00:35:10,000 mewakili apa yang diambil tindakan atas. 660 00:35:10,000 --> 00:35:15,000 Jika saya menekan tombol, pengirim ini akan menjadi yang UIButton 661 00:35:15,000 --> 00:35:18,000 bahwa aku benar-benar ditekan, sehingga berarti bahwa UIButton 662 00:35:18,000 --> 00:35:20,000 memiliki tag karena saya membuat tag. 663 00:35:20,000 --> 00:35:23,000 >> Jika saya ingin mendapatkan tag saya hanya bisa mengatakan 664 00:35:23,000 --> 00:35:26,000 Saya ingin tag dari pengirim, 665 00:35:26,000 --> 00:35:28,000 dan sekali lagi, saya baru saja dicor ke UIButton. 666 00:35:28,000 --> 00:35:32,000 Saya kebetulan tahu bahwa pengirim akan UIButton. 667 00:35:32,000 --> 00:35:34,000 Itu tidak selalu harus UIButton. 668 00:35:34,000 --> 00:35:36,000 Aku bisa, misalnya, mendaftarkan event handler yang sama 669 00:35:36,000 --> 00:35:38,000  satu untuk tombol, satu untuk slider. 670 00:35:38,000 --> 00:35:40,000 Dalam kasus ini, saya tahu mereka semua tombol, jadi aku akan mengatakan 671 00:35:40,000 --> 00:35:43,000 Saya ingin ini menjadi sebuah tombol, dan kemudian saya bisa mendapatkan tag, 672 00:35:43,000 --> 00:35:48,000 dan dari tag sekarang saya tahu keberadaan saya di dalam dewan. 673 00:35:48,000 --> 00:35:51,000 Lalu aku hanya dapat mengatur baik X atau O, dapat flip gilirannya, 674 00:35:51,000 --> 00:35:54,000 cek yang telah memenangkan, dan sebagainya. 675 00:35:54,000 --> 00:35:59,000 >> Setiap pertanyaan ini sejauh ini? 676 00:35:59,000 --> 00:36:02,000 Oke, semua kode yang kami diposting online-kita tidak ingin masuk ke terlalu banyak 677 00:36:02,000 --> 00:36:06,000 dari logika Toe Tic Tac, tapi sekarang Anda dapat melihat yang benar-benar 678 00:36:06,000 --> 00:36:09,000 semua yang kita lakukan adalah kita perulangan atas array ini, 679 00:36:09,000 --> 00:36:13,000 jadi kami memiliki beberapa untuk loop di sini, dan kami hanya membandingkan untuk melihat 680 00:36:13,000 --> 00:36:18,000 kita memiliki pertandingan di semua baris, pertandingan dalam kolom atau sesuatu seperti itu. 681 00:36:18,000 --> 00:36:21,000 Untuk benar-benar menjalankan aplikasi ini, jika saya tekan salah satu tombol 682 00:36:21,000 --> 00:36:24,000 bahwa metode bermain dipecat, sehingga berarti saya hanya menetapkan 683 00:36:24,000 --> 00:36:31,000 tombol untuk menjadi X, jadi sekarang tombol ini akan menjadi O, dan seterusnya, 684 00:36:31,000 --> 00:36:35,000 dan jadi itulah bagaimana kita mulai berinteraksi dengan aplikasi satu halaman. 685 00:36:35,000 --> 00:36:38,000 >> Kami akan mengirimkan kode, sehingga merasa bebas untuk membaca dengan teliti bahwa, 686 00:36:38,000 --> 00:36:43,000 tetapi mari kita sekarang berbicara tentang beberapa aplikasi yang lebih dari satu halaman. 687 00:36:43,000 --> 00:36:47,000 Menyenangkan seperti Tac Toe Tic adalah, banyak aplikasi dalam IOS 688 00:36:47,000 --> 00:36:50,000 adalah jenis bor ini ke hal-hal dengan beberapa layar. 689 00:36:50,000 --> 00:36:54,000 Konsep pertama yang kita harus bicara tentang adalah protokol, 690 00:36:54,000 --> 00:36:57,000 dan protokol hanyalah seperangkat metode 691 00:36:57,000 --> 00:36:59,000 bahwa Anda bisa berjanji untuk mendefinisikan. 692 00:36:59,000 --> 00:37:02,000 Jika saya membuat ini protokol baru dengan 2 metode, ini yang pertama, 693 00:37:02,000 --> 00:37:05,000 jika jenis kembali batal, saya menyebutnya foo. 694 00:37:05,000 --> 00:37:07,000 Dibutuhkan tanpa argumen. Saya memiliki metode lain. 695 00:37:07,000 --> 00:37:11,000 Ini mengembalikan sebuah int. Saya menyebutnya bar, dan dibutuhkan satu argumen. 696 00:37:11,000 --> 00:37:14,000 Semua protokol ini adalah yang disebut SomeProtocol di sini, 697 00:37:14,000 --> 00:37:19,000 ini adalah satu set hal bahwa seseorang dapat menerapkan. 698 00:37:19,000 --> 00:37:22,000 Saya belum dalam protokol ini mengatakan apa foo tidak. 699 00:37:22,000 --> 00:37:26,000 Sebaliknya, Aku hanya mengatakan Anda bisa mendefinisikan foo jika Anda ingin. 700 00:37:26,000 --> 00:37:30,000 Jika saya membuat pandangan controller atau menciptakan kelas 701 00:37:30,000 --> 00:37:33,000 Saya bisa masuk dari janji kelas untuk mengimplementasikan 702 00:37:33,000 --> 00:37:40,000 beberapa metode, jadi misalnya, jika mengatakan 703 00:37:40,000 --> 00:37:43,000 ini sekarang bilang aku membuat janji kepada Anda bahwa di dalam 704 00:37:43,000 --> 00:37:50,000 kelas ini kontroler pandangan saya akan memiliki definisi untuk kedua foo dan bar. 705 00:37:50,000 --> 00:37:52,000 >> Mengapa itu berguna? 706 00:37:52,000 --> 00:37:55,000 Banyak komponen dalam IOS mengambil keuntungan dari ini 707 00:37:55,000 --> 00:37:58,000 pola desain disebut delegasi, dan apa delegasi mengatakan 708 00:37:58,000 --> 00:38:01,000 adalah bahwa, misalnya, jika saya memiliki kotak teks 709 00:38:01,000 --> 00:38:04,000 dan ada beberapa peristiwa yang dapat didaftarkan dalam kotak teks saya, 710 00:38:04,000 --> 00:38:07,000 daripada menciptakan peristiwa terpisah apa yang bisa saya lakukan adalah saya dapat mengatakan 711 00:38:07,000 --> 00:38:10,000 delegasi dari kotak teks ini akan beberapa objek. 712 00:38:10,000 --> 00:38:13,000 Ketika saya mengatakan bahwa ini adalah delegasi sekarang yang berarti bahwa 713 00:38:13,000 --> 00:38:16,000 setiap kali beberapa peristiwa akan dipecat dalam kotak teks 714 00:38:16,000 --> 00:38:18,000 daripada harus mendaftar atau sesuatu seperti itu 715 00:38:18,000 --> 00:38:21,000 itu hanya akan memanggil metode pada delegasi. 716 00:38:21,000 --> 00:38:24,000 Sebagai contoh, dalam kotak teks saya, saya memiliki sebuah metode untuk ketika saya menekan 717 00:38:24,000 --> 00:38:27,000 yang dilakukan tombol di kanan bawah, 718 00:38:27,000 --> 00:38:30,000 dan jadi daripada mendaftarkan event handler apa yang bisa saya katakan adalah 719 00:38:30,000 --> 00:38:34,000 kotak teks, di sini adalah obyek yang saya ingin Anda memanggil metode pada 720 00:38:34,000 --> 00:38:37,000 setiap kali seseorang menekan tombol dilakukan, 721 00:38:37,000 --> 00:38:40,000 dan itu berarti bahwa objek yang memiliki menerapkan beberapa protokol 722 00:38:40,000 --> 00:38:45,000 yang mengatakan saya berjanji untuk mendefinisikan bahwa tindakan tombol dilakukan, 723 00:38:45,000 --> 00:38:47,000 karena jika itu tidak menunjukkan metode yang Anda dan tekan selesai, 724 00:38:47,000 --> 00:38:49,000 maka itu akan menjadi membingungkan. 725 00:38:49,000 --> 00:38:55,000 >> Mari kita lihat sebuah contoh. 726 00:38:55,000 --> 00:38:58,000 Di sini saya hanya memiliki satu kotak teks, 727 00:38:58,000 --> 00:39:04,000 dan salah satu properti dari kotak teks di sini di sisi kanan adalah delegasi. 728 00:39:04,000 --> 00:39:06,000 Ini adalah properti kelas. 729 00:39:06,000 --> 00:39:09,000 Apa yang saya lakukan di sini adalah cara mengontrol diklik, dan aku diseret dari tempat ini di sini 730 00:39:09,000 --> 00:39:13,000 ke controller tampilan, dan mengatakan sekarang delegasi dari kotak teks ini 731 00:39:13,000 --> 00:39:18,000 akan menjadi controller tampilan. 732 00:39:18,000 --> 00:39:20,000 Itu berarti bahwa ketika beberapa tindakan terjadi, daripada mendaftar 733 00:39:20,000 --> 00:39:25,000 terpisah event handler saya ingin Anda untuk mengirim mereka ke delegasi. 734 00:39:25,000 --> 00:39:28,000 Sekarang mari kita lihat kontroler pandangan saya. 735 00:39:28,000 --> 00:39:32,000 Di dalam file h. Aku sudah membuat janji. 736 00:39:32,000 --> 00:39:36,000 Aku sudah berjanji untuk menerapkan beberapa metode dalam protokol ini 737 00:39:36,000 --> 00:39:38,000 disebut UITextFieldDelegate, dan sekali lagi, 738 00:39:38,000 --> 00:39:42,000 ini hanya beberapa daftar dari beberapa hal yang saya dapat memilih untuk menerapkan. 739 00:39:42,000 --> 00:39:46,000 >> Jika saya datang ke sini dalam. M file saya, saya telah menerapkan salah satu metode tersebut. 740 00:39:46,000 --> 00:39:49,000 Saya sudah menyebutnya textFieldShouldReturn 741 00:39:49,000 --> 00:39:52,000 karena itulah apa itu disebut dalam protokol. 742 00:39:52,000 --> 00:39:57,000 Dan sekarang setiap kali saya menekan tombol dalam melakukan itu text field 743 00:39:57,000 --> 00:40:00,000 ini adalah apa yang akan dipanggil, jadi saya tidak mendaftarkan event handler. 744 00:40:00,000 --> 00:40:03,000 Saya terhubung delegasi, dan setiap kali acara ini dipecat 745 00:40:03,000 --> 00:40:08,000 ini adalah metode yang akan dipanggil, jadi jika aku datang ke sini untuk storyboard saya dan menjalankannya- 746 00:40:08,000 --> 00:40:11,000 sementara itu memuat kita dapat melihat apa hal ini. 747 00:40:11,000 --> 00:40:13,000 Pada layar saya, saya memiliki 2 hal. 748 00:40:13,000 --> 00:40:16,000 Aku punya kolom teks, dan saya memiliki label ini. 749 00:40:16,000 --> 00:40:19,000 Saya hanya mengatakan saya ingin teks label ini 750 00:40:19,000 --> 00:40:23,000 untuk menjadi sama dengan apa pun pengguna mengetik dalam kolom teks. 751 00:40:23,000 --> 00:40:26,000 Ini baris berikutnya di sini hanyalah sebuah metode yang saya akan menelepon 752 00:40:26,000 --> 00:40:29,000 pada kolom teks yang mengatakan saya ingin Anda untuk menyembunyikan keyboard. 753 00:40:29,000 --> 00:40:33,000 Ini hanya metode sewenang-wenang bahwa Apple memilih. 754 00:40:33,000 --> 00:40:38,000 >> Sekali lagi, sebelum saya melakukan apapun yang saya harus kawat semuanya, jadi saya pertama kali datang ke sini. 755 00:40:38,000 --> 00:40:42,000 Dari controller pandangan saya tarik ke kotak teks. 756 00:40:42,000 --> 00:40:46,000 Aku membiarkan pergi, dan aku bisa melihat di sini bahwa saya dapat membuat properti bidang teks 757 00:40:46,000 --> 00:40:49,000 karena di sini di controller pandangan saya telah didefinisikan properti 758 00:40:49,000 --> 00:40:52,000 yang merupakan IBOutlet dari kolom teks. 759 00:40:52,000 --> 00:40:55,000 Ini mengatakan bahwa saya bisa mentransfer properti ini sampai 760 00:40:55,000 --> 00:40:59,000 ke bidang teks di UI saya. 761 00:40:59,000 --> 00:41:03,000 Sekarang ketika saya klik ini saya bisa mulai mengetik. 762 00:41:03,000 --> 00:41:06,000 Sekarang jika saya mengklik tombol dilakukan ini akan api 763 00:41:06,000 --> 00:41:08,000 suatu peristiwa yang sekarang saya bisa menanggapi. 764 00:41:08,000 --> 00:41:10,000 Tidak ada event handler. 765 00:41:10,000 --> 00:41:13,000 Begitulah cara saya hanya menanggapi bahwa tombol dilakukan. 766 00:41:13,000 --> 00:41:15,000 Masuk akal? 767 00:41:15,000 --> 00:41:20,000 >> Ini bukanlah pola desain yang-Anda mungkin tidak pernah menemukan diri 768 00:41:20,000 --> 00:41:23,000 menciptakan protokol sendiri, tapi hanya tahu bahwa beberapa 769 00:41:23,000 --> 00:41:27,000 berbeda iOS komponen mendaftar peristiwa dalam cara yang berbeda. 770 00:41:27,000 --> 00:41:29,000 Tombol, misalnya, menggunakan mereka IBActions. 771 00:41:29,000 --> 00:41:32,000 Bidang teks, di sisi lain, akan menggunakan delegasi. 772 00:41:32,000 --> 00:41:36,000 Kita bisa melihat dan Anda dapat melihat semua itu dalam up dokumentasi. 773 00:41:36,000 --> 00:41:41,000 By the way, sebenarnya ada satu ton barang UI dibangun ke iOS untuk Anda, 774 00:41:41,000 --> 00:41:46,000 jadi misalnya, cara saya membuat yang mengatakan dilakukan di bagian kanan bawah 775 00:41:46,000 --> 00:41:48,000 adalah Aku memilih bidang teks. 776 00:41:48,000 --> 00:41:50,000 Saya datang ke sini. 777 00:41:50,000 --> 00:41:53,000 Saya menggulir ke bawah sedikit untuk mengembalikan kunci, 778 00:41:53,000 --> 00:41:56,000 dan saya benar-benar dapat membuat ini sejumlah hal, seperti jika saya ingin mengatakan bahwa 779 00:41:56,000 --> 00:42:00,000 panggilan darurat bukannya aku bisa melakukan itu, yang benar-benar acak, 780 00:42:00,000 --> 00:42:02,000 dan saya tidak tahu mengapa ada built-in darurat tombol panggilan, 781 00:42:02,000 --> 00:42:06,000 tapi ada, ia mengatakan panggilan darurat dalam huruf sangat kecil. 782 00:42:06,000 --> 00:42:08,000 Di sana Anda pergi. 783 00:42:08,000 --> 00:42:12,000 >> Pasti mengeksplorasi semua opsi yang berbeda di iOS. 784 00:42:12,000 --> 00:42:14,000 Setiap pertanyaan tentang delegasi? 785 00:42:14,000 --> 00:42:18,000 Sekali lagi, hanya pola desain yang menarik yang Anda harus sadar. 786 00:42:18,000 --> 00:42:22,000 Oke, mari selanjutnya kita lihat tampilan tabel. 787 00:42:22,000 --> 00:42:26,000 Sebuah tampilan tabel pada dasarnya adalah bahwa daftar item yang seluruh tempat di iOS. 788 00:42:26,000 --> 00:42:29,000 Ketika Anda membalik-balik semua kontak Anda, Anda sedang melihat 789 00:42:29,000 --> 00:42:34,000 halaman pengaturan, dan hal semacam daftar hal-hal yang disebut tampilan tabel. 790 00:42:34,000 --> 00:42:37,000 Menerapkan tampilan tabel di iOS cukup sederhana. 791 00:42:37,000 --> 00:42:41,000 Alih-alih membuat sebuah kelas yang turun dari yang UIViewController 792 00:42:41,000 --> 00:42:44,000 seperti kita lakukan sebelum kita hanya perlu untuk mengatakan daripada 793 00:42:44,000 --> 00:42:46,000 semuanya UIViewController tidak ingin saya lakukan, 794 00:42:46,000 --> 00:42:50,000 Saya mengatakan semuanya UITableViewController yang tidak ingin saya lakukan, 795 00:42:50,000 --> 00:42:54,000 sehingga hanya menambahkan beberapa hal tambahan yang benar-benar dilakukan untuk kita. 796 00:42:54,000 --> 00:42:58,000 Kita perlu melakukan sangat sedikit untuk pada dasarnya mengisi kekosongan dalam tabel. 797 00:42:58,000 --> 00:43:02,000 >> Dalam rangka untuk menampilkan tabel saya harus menjawab beberapa pertanyaan. 798 00:43:02,000 --> 00:43:06,000 Pertanyaan pertama yang saya butuhkan untuk menjawab adalah berapa banyak bagian dalam tabel? 799 00:43:06,000 --> 00:43:08,000 Ketika Anda membalik-balik aplikasi kontak Anda, Anda akan melihat bahwa itu semacam 800 00:43:08,000 --> 00:43:12,000 diselenggarakan oleh As, maka Anda memiliki B, dan Anda memiliki judul sub kecil. 801 00:43:12,000 --> 00:43:14,000 Masing-masing disebut bagian. 802 00:43:14,000 --> 00:43:16,000 Anda mungkin atau mungkin tidak perlu ini. 803 00:43:16,000 --> 00:43:19,000 Hal pertama yang perlu Anda lakukan adalah menerapkan metode 804 00:43:19,000 --> 00:43:22,000 disebut tableView: numberOfSectionsInTableView. 805 00:43:22,000 --> 00:43:25,000 Itu hanya mengembalikan berapa banyak bagian yang Anda miliki, 806 00:43:25,000 --> 00:43:29,000 jadi ini bisa dikatakan kembali satu jika Anda memiliki satu tampilan meja besar. 807 00:43:29,000 --> 00:43:33,000 Pertanyaan berikutnya yang IOS perlu tahu adalah berapa banyak baris yang Anda miliki? 808 00:43:33,000 --> 00:43:36,000 Misalnya, Anda sedang membalik-balik tampilan tabel. 809 00:43:36,000 --> 00:43:39,000 Anda tetap memiliki jumlah lagu yang Anda cari di atau sejumlah tetap kontak. 810 00:43:39,000 --> 00:43:41,000 Jika Anda saya, tentu saja, tidak banyak, 811 00:43:41,000 --> 00:43:44,000 dan sehingga cara iOS tahu berapa banyak sel untuk ditampilkan. 812 00:43:44,000 --> 00:43:46,000 >> Sekali lagi, ini bisa mengatakan sesuatu seperti kembali 3. 813 00:43:46,000 --> 00:43:49,000 Tampilan tabel saya memiliki 3 baris. 814 00:43:49,000 --> 00:43:52,000 Akhirnya, iOS perlu tahu apa yang tampak seperti setiap sel, 815 00:43:52,000 --> 00:43:54,000 jadi apa itu benar-benar akan lakukan adalah memanggil metode ini di sini, 816 00:43:54,000 --> 00:43:57,000 ini tableView: cellForRowAtIndexPath. 817 00:43:57,000 --> 00:44:01,000 Ini akan memanggil metode ini pada setiap sel dalam tabel Anda. 818 00:44:01,000 --> 00:44:03,000 Bagaimana mereka bisa mengetahui berapa kali menyebutnya? 819 00:44:03,000 --> 00:44:06,000 Nah, Anda mengatakan itu dalam jumlah baris dalam bagian. 820 00:44:06,000 --> 00:44:08,000 Kita akan menyebutnya pada masing-masing sel-sel kita, 821 00:44:08,000 --> 00:44:11,000 dan dalam hal ini adalah di mana Anda benar-benar dapat melakukan hal-hal seperti 822 00:44:11,000 --> 00:44:16,000 mengatur teks atau memberitahu Anda apa yang tombol biru kecil di sisi kanan. 823 00:44:16,000 --> 00:44:19,000 Pola untuk mendapatkan sel-sel ini, kita akan menggunakan metode ini 824 00:44:19,000 --> 00:44:22,000 disebut dequeueReusableCellWithIdentifier. 825 00:44:22,000 --> 00:44:29,000 >> Objective-C sebenarnya sangat terkenal untuk panjang konyol nama metode mereka, 826 00:44:29,000 --> 00:44:32,000 dan ini benar-benar kasus yang bagus dalam contoh titik. 827 00:44:32,000 --> 00:44:37,000 Apa metode yang dilakukan adalah ini hanya bilang aku ingin kau memberiku sel. 828 00:44:37,000 --> 00:44:39,000 Hanya iOS hal. 829 00:44:39,000 --> 00:44:41,000 Jika Anda memiliki sesuatu seperti 100.000 lagu di iPod Anda 830 00:44:41,000 --> 00:44:45,000 apa iOS tidak ingin lakukan adalah mengalokasikan 100.000 sel, 831 00:44:45,000 --> 00:44:48,000 karena jika Anda berada di bagian atas daftar Anda, apakah Anda benar-benar perlu untuk mengalokasikan memori 832 00:44:48,000 --> 00:44:51,000 untuk sel yang 99.000 baris ke bawah? 833 00:44:51,000 --> 00:44:55,000 Tidak, karena ketika Anda sedang menggulir Anda dapat jenis mengalokasikan saat Anda pergi bersama. 834 00:44:55,000 --> 00:44:57,000 Hal ini dilakukan untuk Anda. 835 00:44:57,000 --> 00:44:59,000 Anda tidak perlu khawatir tentang semua hal kinerja bodoh. 836 00:44:59,000 --> 00:45:02,000 Yang Anda katakan adalah Anda menyebutnya dequeueReusableCellWithIdentifier metode, 837 00:45:02,000 --> 00:45:06,000 dan ini mengatakan, oke, jika Anda perlu untuk Aku akan membuat sel baru untuk Anda. 838 00:45:06,000 --> 00:45:09,000 >> Tapi jika Anda di bawah meja dan Anda sudah dialokasikan beberapa sel 839 00:45:09,000 --> 00:45:12,000 di bagian atas tabel bahwa Anda benar-benar tidak akan membutuhkan waktu dekat 840 00:45:12,000 --> 00:45:15,000 Saya akan memberi Anda salah satu dari mereka kembali daripada mengalokasikan yang baru, 841 00:45:15,000 --> 00:45:17,000 dan jadi ini adalah kekhawatiran kinerja yang bagus. 842 00:45:17,000 --> 00:45:21,000 Anda tidak perlu mengalokasikan 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 Ini akan mengembalikan kepada Anda sebuah objek sel. 845 00:45:25,000 --> 00:45:28,000 Setelah Anda memiliki objek sel Anda dapat melakukan hal-hal untuk itu. 846 00:45:28,000 --> 00:45:32,000 Anda dapat mengatur teks dari sel dengan properti ini disebut label teks. 847 00:45:32,000 --> 00:45:36,000 Anda dapat menambahkan panah yang di sebelah kanan atau beberapa hal acak lainnya 848 00:45:36,000 --> 00:45:41,000 dengan properti lain yang disebut accessoryType, dan seterusnya dan seterusnya. 849 00:45:41,000 --> 00:45:46,000 >> Mari kita lihat benar-benar menerapkan tampilan tabel sekarang. 850 00:45:46,000 --> 00:45:49,000 Ketika saya membuat proyek ini 851 00:45:49,000 --> 00:45:53,000 daripada mengatakan aplikasi tampilan tunggal saya benar-benar datang ke sini 852 00:45:53,000 --> 00:45:57,000 untuk master-detail aplikasi, dan jadi pada dasarnya ini sesuai dengan aplikasi mail 853 00:45:57,000 --> 00:46:01,000 pada iPad dengan tampilan tabel di sebelah kiri dan kemudian isi di sebelah kanan. 854 00:46:01,000 --> 00:46:07,000 Pada iPod atau iPhone ini akan sesuai dengan tampilan tabel tunggal. 855 00:46:07,000 --> 00:46:10,000 Di situlah saya mendapat kode saya pemula. 856 00:46:10,000 --> 00:46:13,000 >> Mari kita pertama kita lihat storyboard. 857 00:46:13,000 --> 00:46:15,000 Semua ini dilakukan untuk saya, pada dasarnya diciptakan. 858 00:46:15,000 --> 00:46:18,000 Ini bar navigasi menunjukkan apa sel contoh bisa terlihat seperti, 859 00:46:18,000 --> 00:46:22,000 dan saya dapat klik dua kali ini, mengubah judul. 860 00:46:22,000 --> 00:46:25,000 Setiap kekhawatiran UI lain saya bisa menangani di sana. 861 00:46:25,000 --> 00:46:27,000 File header terlihat sangat sederhana. 862 00:46:27,000 --> 00:46:30,000 Daripada mengatakan ini adalah UIViewController kita sekarang mengatakan ini adalah 863 00:46:30,000 --> 00:46:35,000 TableViewController, jadi kita tahu bahwa kita ingin memanggil semua metode tabel. 864 00:46:35,000 --> 00:46:38,000 Selanjutnya saya ingin membuat sebuah properti yang akan mewakili 865 00:46:38,000 --> 00:46:40,000 hal-hal dalam meja saya. 866 00:46:40,000 --> 00:46:43,000 Tabel ini akan menampilkan sewenang-wenang 867 00:46:43,000 --> 00:46:46,000 daftar buah, dan jadi saya perlu untuk membuat array beberapa 868 00:46:46,000 --> 00:46:49,000 di mana saya bisa memasukkan buah. 869 00:46:49,000 --> 00:46:52,000 Di dalam file implementasi saya hal pertama yang saya ingin lakukan 870 00:46:52,000 --> 00:46:55,000 adalah saya ingin memastikan bahwa saya menginisialisasi array ini. 871 00:46:55,000 --> 00:46:58,000 >> Aku berkata alloc init, menciptakan berbagai buah saya, 872 00:46:58,000 --> 00:47:03,000 dan aku menambahkan 4 hal untuk itu, salah satunya adalah jauh lebih kontroversial daripada 3 lainnya. 873 00:47:03,000 --> 00:47:06,000 Dan sekarang saya memiliki sebuah array ukuran 4. 874 00:47:06,000 --> 00:47:08,000 Kami gemetar itu dalam CS50. 875 00:47:08,000 --> 00:47:11,000 Saya sekarang memiliki sebuah array ukuran 4. 876 00:47:11,000 --> 00:47:13,000 Sekarang aku akan mulai menjawab pertanyaan-pertanyaan, dan benar-benar, 877 00:47:13,000 --> 00:47:16,000 ketika saya membuat aplikasi ini semua ini sudah dilakukan untuk saya. 878 00:47:16,000 --> 00:47:19,000 Saya tidak perlu mengetikkan jumlah seksi pada tampilan tabel. 879 00:47:19,000 --> 00:47:22,000 Itu sudah ada di sana, dan aku mengisi kekosongan. 880 00:47:22,000 --> 00:47:24,000 Berapa banyak bagian 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 Yah, aku punya satu baris untuk setiap buah, sehingga jumlah ini 884 00:47:31,000 --> 00:47:34,000 adalah properti dari setiap array yang mengatakan seberapa besar itu? 885 00:47:34,000 --> 00:47:36,000 Itulah berapa banyak baris yang saya miliki. 886 00:47:36,000 --> 00:47:42,000 Akhirnya, saya perlu mengatakan apa setiap sel terlihat seperti? 887 00:47:42,000 --> 00:47:46,000 Aku akan mengatakan dequeueReusableCellWithIdentifier. 888 00:47:46,000 --> 00:47:48,000 >> Sekali lagi, ini sudah ditulis untuk saya. 889 00:47:48,000 --> 00:47:51,000 Saya tidak perlu melakukannya sendiri, dan saya ingin 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 bahwa kita memanggil metode yang sama pada setiap sel, 892 00:47:57,000 --> 00:48:01,000 dan argumen ini di sini, ini argumen indexPath, 893 00:48:01,000 --> 00:48:03,000 mengatakan apa yang berturut-turut aku masuk 894 00:48:03,000 --> 00:48:05,000 Jika saya mengatakan indexPath.row di sini 895 00:48:05,000 --> 00:48:09,000 ini akan menjadi 0, maka akan menjadi 1, maka akan menjadi 2, dan ini adalah jadi saya tahu 896 00:48:09,000 --> 00:48:11,000 apa sel Saat ini saya menampilkan. 897 00:48:11,000 --> 00:48:15,000 Saya ingin mengatur teks dari sel menggunakan properti textLabel 898 00:48:15,000 --> 00:48:19,000 untuk masuk ke dalam berbagai buah saya dan mendapatkan 899 00:48:19,000 --> 00:48:21,000 obyek yang sesuai untuk setiap baris. 900 00:48:21,000 --> 00:48:24,000 Jika ini adalah string, saya sekarang pengaturan 901 00:48:24,000 --> 00:48:28,000 properti teks ke string. 902 00:48:28,000 --> 00:48:30,000 Aku bisa melakukan satu hal lainnya. 903 00:48:30,000 --> 00:48:32,000 Saya juga bisa mendaftarkan event handler pada masing-masing sel, 904 00:48:32,000 --> 00:48:35,000 jadi ketika saya tekan masing-masing sel 905 00:48:35,000 --> 00:48:39,000 didSelectRowAtIndexPath ini, ini akan dipanggil untuk saya, 906 00:48:39,000 --> 00:48:42,000 sehingga hanya dengan mendefinisikan ini saya sekarang dapat menangani apa yang terjadi 907 00:48:42,000 --> 00:48:46,000 ketika Anda menekan sel, dan sekali lagi, kami lewat di mana sel disadap 908 00:48:46,000 --> 00:48:50,000 sehingga kita dapat menggunakan kembali ini event handler 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 menampilkan popup lain mengganggu 911 00:48:55,000 --> 00:48:59,000 yang hanya mengatakan bahwa Anda memilih sesuatu di mana sesuatu yang 912 00:48:59,000 --> 00:49:04,000 akan menjadi obyek baris. 913 00:49:04,000 --> 00:49:10,000 Ketika saya menjalankan ini, aku akan memiliki tampilan tabel yang bagus 914 00:49:10,000 --> 00:49:14,000 dengan satu baris untuk setiap buah tersebut, dan jika saya tekan satu 915 00:49:14,000 --> 00:49:16,000 ia memberitahu saya apa yang terjadi. 916 00:49:16,000 --> 00:49:21,000 Masuk akal? 917 00:49:21,000 --> 00:49:24,000 Mari kita membangun sedikit lebih kompleks dari sebuah aplikasi, 918 00:49:24,000 --> 00:49:28,000 sebanyak mengklik Anda memilih tomat. 919 00:49:28,000 --> 00:49:31,000 Bagian yang baik tentang storyboard tersebut 920 00:49:31,000 --> 00:49:35,000 yang itu tidak hanya akan membantu kita layar desain individual, 921 00:49:35,000 --> 00:49:38,000 itu juga akan membantu kita menyatukan seluruh aplikasi kami, 922 00:49:38,000 --> 00:49:42,000 sehingga aplikasi akhir kita akan bangunan ini olahraga baik pembaca berita, 923 00:49:42,000 --> 00:49:45,000 dan sehingga akan memiliki beberapa layar, sehingga saya benar-benar dapat mewakili 924 00:49:45,000 --> 00:49:48,000 masing-masing beberapa layar pada storyboard, 925 00:49:48,000 --> 00:49:52,000 dan aku bisa zoom out dan melihat aplikasi saya dari tingkat tinggi. 926 00:49:52,000 --> 00:49:55,000 >> Dalam rangka untuk menciptakan elemen baru dalam storyboard saya 927 00:49:55,000 --> 00:49:59,000 itu benar-benar sederhana dalam Interface Builder. 928 00:49:59,000 --> 00:50:01,000 Jika saya ingin menambahkan layar lain ini, misalnya, 929 00:50:01,000 --> 00:50:06,000 Saya pertama dapat memperkecil dengan pinch zoom bahwa Apple mencintai begitu banyak, 930 00:50:06,000 --> 00:50:09,000 dan di sini sebelum saya mencari tombol 931 00:50:09,000 --> 00:50:12,000 dan saya drag dan drop tombol 932 00:50:12,000 --> 00:50:15,000 jika saya ingin membuat layar baru saya benar-benar bisa hanya drag dan drop 933 00:50:15,000 --> 00:50:19,000 controller pandangan keseluruhan, jadi jika saya ambil ini, menariknya di sini, 934 00:50:19,000 --> 00:50:23,000 hey, ada layar lain, dan jadi sekarang menggunakan file ini storyboard yang sama 935 00:50:23,000 --> 00:50:26,000 Aku bisa memiliki semua layar dalam aplikasi saya, dan saya bisa memperkecil 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 belum. 938 00:50:32,000 --> 00:50:36,000 Cara yang ini 2 layar berinteraksi adalah Anda mendefinisikan hubungan. 939 00:50:36,000 --> 00:50:39,000 Pada dasarnya anda dapat mengatakan layar ini, ketika Anda menekan tombol ini, 940 00:50:39,000 --> 00:50:42,000 Saya ingin Anda geser ke layar baru ini. 941 00:50:42,000 --> 00:50:44,000 Itu berarti ada hubungan semacam ini antara 942 00:50:44,000 --> 00:50:46,000  layar pertama dan layar kedua. 943 00:50:46,000 --> 00:50:49,000 Anda akan memiliki dasarnya panah dari tombol yang ke layar kedua 944 00:50:49,000 --> 00:50:53,000 mengatakan bahwa ketika Anda menekan tombol ini yang mana saya ingin pergi. 945 00:50:53,000 --> 00:50:57,000 Sama seperti kita mengawasi diklik dan diseret untuk menentukan orang-outlet 946 00:50:57,000 --> 00:51:01,000 kita akan melakukan hal yang sama untuk mendefinisikan segues. 947 00:51:01,000 --> 00:51:05,000 >> Kita akan melihat contoh untuk itu, dan sebelum kita benar-benar transisi 948 00:51:05,000 --> 00:51:08,000 dari satu layar ke yang lain iOS cukup baik untuk memanggil metode ini 949 00:51:08,000 --> 00:51:11,000 disebut prepareForSegue, dan ini adalah di mana kita dapat mulai 950 00:51:11,000 --> 00:51:14,000 mengirimkan data dari satu aplikasi ke yang lain. 951 00:51:14,000 --> 00:51:17,000 Dalam contoh kita akan melihatnya pada dasarnya akan memungkinkan kita 952 00:51:17,000 --> 00:51:20,000 untuk menyaring tim bisbol oleh liga dan divisi. 953 00:51:20,000 --> 00:51:23,000 Ketika saya memilih liga, misalnya, saya ingin transisi 954 00:51:23,000 --> 00:51:25,000 ke layar berikutnya di mana saya bisa menampilkan semua divisi 955 00:51:25,000 --> 00:51:27,000 dalam liga atau semua tim yang berbeda. 956 00:51:27,000 --> 00:51:31,000 Saya perlu mengirim dengan layar apa yang tim Anda harus menampilkan. 957 00:51:31,000 --> 00:51:35,000 Untuk melakukan itu aku akan mengambil keuntungan dari metode ini di sini. 958 00:51:35,000 --> 00:51:39,000 >> Akhirnya, hanya titik acak pada iOS. 959 00:51:39,000 --> 00:51:41,000 Jika Anda ingin menyimpan data ini ada hal yang disebut data inti, 960 00:51:41,000 --> 00:51:44,000 yang sebenarnya semacam rumit untuk bekerja dengan. 961 00:51:44,000 --> 00:51:47,000 Anda juga dapat menggunakan SQL untuk menyimpan data, 962 00:51:47,000 --> 00:51:51,000 yang, sekali lagi, bagus tapi agak di sisi lebih rumit untuk bekerja dengan, 963 00:51:51,000 --> 00:51:55,000 namun iOS juga mendukung hal-hal yang benar-benar keren disebut daftar properti, 964 00:51:55,000 --> 00:52:00,000 dan daftar properti hanyalah sebuah file yang mewakili pasangan nilai kunci. 965 00:52:00,000 --> 00:52:03,000 Anda mendefinisikan daftar kunci, dan Anda mengatakan kunci ini akan menjadi array. 966 00:52:03,000 --> 00:52:06,000 Kunci ini akan menjadi string, dan pada dasarnya apa pun yang dapat Anda lakukan 967 00:52:06,000 --> 00:52:10,000 di JSON yang dapat Anda lakukan dalam daftar properti, 968 00:52:10,000 --> 00:52:14,000 dan jadi ini benar-benar baik memungkinkan kita untuk bekerja dengan beberapa data. 969 00:52:14,000 --> 00:52:18,000 Sebagai contoh, saya punya ini Teams.plist yang saya buat. 970 00:52:18,000 --> 00:52:22,000 Saya membuat sebuah file plist baru, dan saya bisa menelusuri. 971 00:52:22,000 --> 00:52:26,000 Ini adalah kamus, ini adalah kamus, ini adalah string, 972 00:52:26,000 --> 00:52:30,000 dan jadi ini adalah representasi grafis yang bagus dari dokumen JSON 973 00:52:30,000 --> 00:52:33,000 atau hanya satu set pasangan nilai kunci, 974 00:52:33,000 --> 00:52:37,000 dan jadi ini adalah data yang saya akan bekerja dengan dalam aplikasi saya. 975 00:52:37,000 --> 00:52:40,000 >> Mari kita pertama datang ke sini. Kami memiliki file lebih banyak sekarang. 976 00:52:40,000 --> 00:52:44,000 Tapi mari kita pertama kali datang ke sini untuk storyboard. 977 00:52:44,000 --> 00:52:48,000 Storyboard sini-jika saya bisa keluar tampilannya- 978 00:52:48,000 --> 00:52:51,000 kita sekarang dapat melihat bahwa ini adalah aliran app saya. 979 00:52:51,000 --> 00:52:53,000 Saya pertama kali akan mulai di layar ini. 980 00:52:53,000 --> 00:52:55,000 Aku akan menelusuri ke layar ini, 981 00:52:55,000 --> 00:52:58,000 dan aku akan menelusuri ke layar ini, dan kita dapat melihat di sini bahwa jika saya jenis 982 00:52:58,000 --> 00:53:04,000 memindahkan salah satu dari ini sekitar kita ini anak panah pergi dari sini ke sini, 983 00:53:04,000 --> 00:53:08,000 dan cara saya mendefinisikan panah itu jika saya memperbesar sedikit, 984 00:53:08,000 --> 00:53:12,000 dan jika saya datang ke controller tampilan ini, 985 00:53:12,000 --> 00:53:16,000 dan inilah sel, dan saya ingin mengatakan bahwa ketika Anda menekan sel 986 00:53:16,000 --> 00:53:18,000 Saya ingin Anda geser ke layar lain. 987 00:53:18,000 --> 00:53:21,000 Aku hanya bisa tahan kontrol, 988 00:53:21,000 --> 00:53:26,000 gulir atas sedikit, tahan kontrol, tarik sel ini atas dan biarkan pergi. 989 00:53:26,000 --> 00:53:30,000 >> Dan di sini kita katakan apa transisi yang ingin Anda gunakan? 990 00:53:30,000 --> 00:53:32,000 Apakah Anda ingin menggunakan hal itu geser yang disebut push? 991 00:53:32,000 --> 00:53:34,000 Apakah Anda ingin geser dari bawah? 992 00:53:34,000 --> 00:53:36,000 Itu disebut modal. 993 00:53:36,000 --> 00:53:40,000 Dan setelah saya klik salah satu, itu akan menarik panah ini untuk saya, 994 00:53:40,000 --> 00:53:44,000 dan itu berarti bahwa saya telah benar-benar ditangani apa yang terjadi ketika saya menekan tombol ini secara grafis. 995 00:53:44,000 --> 00:53:48,000 Saya tidak menulis kode untuk benar-benar meluncur dari satu layar ke yang berikutnya. 996 00:53:48,000 --> 00:53:51,000 Saya mendefinisikan ini secara visual dalam Interface Builder. 997 00:53:51,000 --> 00:53:55,000 Jika saya klik pada tanda panah ini, kita dapat melihat bahwa saya memberikan hal ini nama. 998 00:53:55,000 --> 00:53:59,000 Saya menyebutnya showDivisions, dan ini adalah agar saya dapat mengetahui 999 00:53:59,000 --> 00:54:03,000 apa transisi akan segera terjadi, dan kita akan melihat mengapa hanya sebentar. 1000 00:54:03,000 --> 00:54:06,000 Begitulah cara saya sudah kabel sampai layar yang berbeda di app saya. 1001 00:54:06,000 --> 00:54:09,000 Jika ini adalah sebuah tombol, misalnya, ketimbang tampilan tabel, 1002 00:54:09,000 --> 00:54:11,000 Saya bisa mengendalikan klik pada tombol, tarik ke layar berikutnya, 1003 00:54:11,000 --> 00:54:16,000 dan itulah bagaimana saya bisa melakukan navigasi dengan cara itu. 1004 00:54:16,000 --> 00:54:19,000 >> Benar-benar cepat, jika kita datang ke MasterViewController tersebut, 1005 00:54:19,000 --> 00:54:22,000 lagi, kita hanya akan menentukan daftar hal-hal 1006 00:54:22,000 --> 00:54:26,000 yang akan ditampilkan dalam tampilan tabel. 1007 00:54:26,000 --> 00:54:29,000 Di sini saya katakan saya ingin Anda untuk mengambil file plist, 1008 00:54:29,000 --> 00:54:32,000 dan saya ingin Anda untuk memuatnya ke dalam kamus, 1009 00:54:32,000 --> 00:54:35,000 dan sekali Anda memiliki kamus itu, aku akan menjawab pertanyaan-pertanyaan yang sama lagi. 1010 00:54:35,000 --> 00:54:37,000 Berikut adalah sejumlah bagian. 1011 00:54:37,000 --> 00:54:41,000 Satu, ada satu baris untuk setiap liga, dan teks dari setiap sel 1012 00:54:41,000 --> 00:54:46,000 harus berupa yang pertama, liga pertama, liga kedua, dan seterusnya. 1013 00:54:46,000 --> 00:54:51,000 Akhirnya, aku akan menggunakan metode ini yang baru saja kita saw disebut prepareForSegue, 1014 00:54:51,000 --> 00:54:54,000 dan ini adalah metode yang akan dipecat ketika saya klik 1015 00:54:54,000 --> 00:54:57,000 pada salah satu baris dan karena itu mengaktifkan transisi yang 1016 00:54:57,000 --> 00:54:59,000 yang saya set dengan panah. 1017 00:54:59,000 --> 00:55:02,000 Ini mengatakan bahwa saya dapat memiliki beberapa 1018 00:55:02,000 --> 00:55:05,000 hubungan dari satu layar ke yang lain. 1019 00:55:05,000 --> 00:55:08,000 Jika saya memiliki 2 tombol dan setiap tombol akan membawa Anda ke layar yang berbeda 1020 00:55:08,000 --> 00:55:10,000 Aku akan memiliki 2 segues, 1 untuk setiap tombol. 1021 00:55:10,000 --> 00:55:14,000 Tapi prepareForSegue ini, sekali lagi, akan digunakan kembali 1022 00:55:14,000 --> 00:55:17,000 untuk setiap hubungan yang berbeda, sehingga berarti bahwa saya perlu cara 1023 00:55:17,000 --> 00:55:21,000 mengidentifikasi jika Anda menekan tombol pertama atau Anda menekan tombol kedua. 1024 00:55:21,000 --> 00:55:25,000 >> Ingat ketika saya memberikan yang segue nama, ini showDivisions, 1025 00:55:25,000 --> 00:55:29,000 itulah bagaimana saya sekarang tahu bahwa ini adalah segue yang diaktifkan. 1026 00:55:29,000 --> 00:55:32,000 Yang saya ingin lakukan adalah saya ingin mengatakan 1027 00:55:32,000 --> 00:55:35,000 Saya ingin mencari tahu apa yang saya hanya memukul, 1028 00:55:35,000 --> 00:55:38,000 dan sebagainya untuk mendapatkan itu, saya bisa mengatakan saya ingin indexPath untuk baris yang dipilih, 1029 00:55:38,000 --> 00:55:42,000 ingat indexPath hanya mengatakan di mana saya hanya diklik, 1030 00:55:42,000 --> 00:55:47,000 dan kemudian saya ingin mengatakan saya ingin mencari tahu di mana aku akan. 1031 00:55:47,000 --> 00:55:50,000 DestinationViewController ini, itu adalah milik segue tersebut. 1032 00:55:50,000 --> 00:55:53,000 Itulah layar aku akan, 1033 00:55:53,000 --> 00:55:56,000 jadi saya tahu bahwa layar aku akan disebut DivisionsViewController 1034 00:55:56,000 --> 00:55:59,000 karena saya membuat kelas itu, 1035 00:55:59,000 --> 00:56:02,000 dan jadi sekarang jika saya mengatakan d.divisions 1036 00:56:02,000 --> 00:56:06,000 Sekarang saya menetapkan milik pengontrol tampilan saya akan pergi ke. 1037 00:56:06,000 --> 00:56:10,000 Ini adalah bagaimana saya mengirim data dari satu layar ke layar lain. 1038 00:56:10,000 --> 00:56:13,000 >> Hanya melihat DivisionsViewController ini 1039 00:56:13,000 --> 00:56:16,000 Anda dapat melihat di sini bahwa dalam file h. 1040 00:56:16,000 --> 00:56:20,000 ada adalah bahwa divisi properti, dan itulah apa yang saya pada dasarnya mengisi, 1041 00:56:20,000 --> 00:56:25,000 jadi itulah bagaimana saya tahu bahwa saya menampilkan divisi sesuai dengan 1042 00:56:25,000 --> 00:56:28,000 liga yang saya diklik, dan sekali lagi, 1043 00:56:28,000 --> 00:56:31,000 tampilan tabel yang sebenarnya terlihat hampir sama, hanya menjawab mereka 1044 00:56:31,000 --> 00:56:34,000 3 pertanyaan sederhana serta mengidentifikasi 1045 00:56:34,000 --> 00:56:37,000 apa yang terjadi ketika Anda pindah ke layar berikutnya. 1046 00:56:37,000 --> 00:56:40,000 Hanya beberapa hal lain di sini. 1047 00:56:40,000 --> 00:56:43,000 Anda melihat di atas di sini bahwa daripada mengatakan # include 1048 00:56:43,000 --> 00:56:45,000 Saya sekarang mengatakan # import. 1049 00:56:45,000 --> 00:56:47,000 Ini hanyalah hal Objective-C. 1050 00:56:47,000 --> 00:56:52,000 Impor pada dasarnya adalah versi lebih bagus dari meliputi, 1051 00:56:52,000 --> 00:56:57,000 dan misalnya, kita perlu tahu apa kelas ini, 1052 00:56:57,000 --> 00:57:00,000 jadi saya tidak bisa hanya mengatakan DivisionsViewController. 1053 00:57:00,000 --> 00:57:05,000 Jika kita tidak hashtag dalam standardio.c file c. Kami 1054 00:57:05,000 --> 00:57:07,000 compiler tidak tahu apa printf itu. 1055 00:57:07,000 --> 00:57:12,000 Demikian pula, jika saya tidak mengimpor DivisionsViewController tersebut 1056 00:57:12,000 --> 00:57:16,000 compiler benar-benar tidak tahu apa DivisionsViewController adalah. 1057 00:57:16,000 --> 00:57:19,000 Hanya pastikan bahwa dalam file yang berbeda. Anda m Anda pastikan untuk mengimpor 1058 00:57:19,000 --> 00:57:25,000 h yang sesuai. file sehingga compiler tahu apa yang terjadi. 1059 00:57:25,000 --> 00:57:31,000 >> Akhirnya, apa yang Apple akhirnya tidak akan menampilkan beberapa data menggunakan tampilan web, 1060 00:57:31,000 --> 00:57:35,000 sehingga pandangan web adalah obyek di mana Anda dapat menanamkan 1061 00:57:35,000 --> 00:57:37,000 browser web sedikit dalam aplikasi Anda. 1062 00:57:37,000 --> 00:57:40,000 Yang perlu Anda lakukan adalah menyediakan URL ke browser web Anda, 1063 00:57:40,000 --> 00:57:43,000 jadi saya ingin pergi ke mlb.mlb.com, 1064 00:57:43,000 --> 00:57:46,000 dan ini adalah bagaimana saya dapat mengakses halaman rumah untuk setiap tim, 1065 00:57:46,000 --> 00:57:49,000 dan sebagainya dengan lewat di URL ini 1066 00:57:49,000 --> 00:57:52,000 tampilan web dapat menampilkan ini untuk saya, dan saya bisa melihat sekitar, 1067 00:57:52,000 --> 00:58:01,000 dan simulator sedang digunakan oleh yang satu. 1068 00:58:01,000 --> 00:58:03,000 Sekarang ini berasal dari plist saya. 1069 00:58:03,000 --> 00:58:07,000 Jika saya klik ini ini juga datang dari plist saya, dan sliding ini ditangani 1070 00:58:07,000 --> 00:58:09,000 dengan mendefinisikan 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 sekarang di sini adalah UIWebView saya, jadi hanya seperti itu 1073 00:58:15,000 --> 00:58:19,000 inilah website untuk URL yang saya hanya tertanam, 1074 00:58:19,000 --> 00:58:21,000 dan saya tidak perlu menangani apa pun gila. 1075 00:58:21,000 --> 00:58:24,000 Ini adalah bagaimana untuk menampilkan halaman web. 1076 00:58:24,000 --> 00:58:27,000 Hal-hal seperti tombol ini kembali ke sini juga diberikan kepada saya 1077 00:58:27,000 --> 00:58:33,000 benar-benar gratis karena saya sudah didefinisikan hubungan ini menggunakan segues. 1078 00:58:33,000 --> 00:58:37,000 >> Ada pertanyaan? Ya. 1079 00:58:37,000 --> 00:58:40,000 [Mahasiswa] Jadi, ketika Anda menggunakan alloc, Anda tidak perlu sesuatu yang gratis? 1080 00:58:40,000 --> 00:58:43,000 Tepat, ketika Anda menelepon alloc init dan Anda tidak perlu membebaskan itu. 1081 00:58:43,000 --> 00:58:46,000 IOS akan menangani semua itu untuk Anda. 1082 00:58:46,000 --> 00:58:51,000 Ini luar biasa, dan Anda tidak melanggar aturan. Ya. 1083 00:58:51,000 --> 00:58:54,000 [Siswa] Jika Anda adalah untuk menyertakan tim lagi yang bisa muat di layar, 1084 00:58:54,000 --> 00:58:58,000 akan secara otomatis memiliki pilihan gulir, atau adalah bahwa sesuatu yang Anda perlu menambahkan? 1085 00:58:58,000 --> 00:59:01,000 Tepat, jika saya memiliki tim lebih, misalnya, maka secara otomatis akan menangani 1086 00:59:01,000 --> 00:59:04,000 bergulir bagi saya, dan semua kekhawatiran kinerja 1087 00:59:04,000 --> 00:59:08,000 dengan meja besar juga ditangani benar-benar bagi saya. 1088 00:59:08,000 --> 00:59:11,000 >> Pertanyaan lain? 1089 00:59:11,000 --> 00:59:13,000 Semua kode ini akan diposting. 1090 00:59:13,000 --> 00:59:16,000 Kami semacam dipoles sedikit rincian lebih kecil, 1091 00:59:16,000 --> 00:59:19,000 namun hal-hal seperti pengaturan beberapa properti ke tampilan web 1092 00:59:19,000 --> 00:59:22,000 hanya hal-hal yang bisa Anda peroleh dengan browsing dokumentasi Apple, 1093 00:59:22,000 --> 00:59:24,000 yang benar-benar, benar-benar baik ditata. 1094 00:59:24,000 --> 00:59:27,000 Mereka memiliki banyak aplikasi sampel dan contoh penggunaan 1095 00:59:27,000 --> 00:59:34,000 API yang berbeda, jadi pasti membaca dengan teliti mereka jika Anda bisa. 1096 00:59:34,000 --> 00:59:36,000 Hanya beberapa link bermanfaat Anda mungkin ingin 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 yang besar, jadi mereka dipersingkat. 1099 00:59:41,000 --> 00:59:44,000 Ini pertama adalah seluruh perpustakaan dokumentasi. 1100 00:59:44,000 --> 00:59:46,000 Ada bar pencarian kecil, jadi jika Anda mulai mengetik tombol 1101 00:59:46,000 --> 00:59:50,000 itu akan mulai memberikan Anda semua informasi tentang semua hal yang dapat Anda lakukan dengan sebuah tombol. 1102 00:59:50,000 --> 00:59:53,000 Saya juga menyertakan Panduan Table View Pemrograman. 1103 00:59:53,000 --> 00:59:56,000 Ini menangani tampilan tabel lebih detail, 1104 00:59:56,000 --> 01:00:00,000 bagaimana melakukan hal-hal seperti dinamis menambahkan sel atau sel mengedit atau menghapusnya. 1105 01:00:00,000 --> 01:00:02,000 >> Ada banyak aplikasi sampel dari Apple yang akan menunjukkan Anda bagaimana untuk melakukan itu, 1106 01:00:02,000 --> 01:00:05,000 dan akhirnya, ini yang terakhir adalah Pedoman Human Interface, 1107 01:00:05,000 --> 01:00:09,000 dan ini pada dasarnya beberapa diskusi komponen UI, 1108 01:00:09,000 --> 01:00:12,000 hal-hal seperti tidak membuat sebuah tombol yang 4 piksel dengan 4 piksel. 1109 01:00:12,000 --> 01:00:15,000 Itu ide yang buruk, dan hal-hal lain bahwa Apple ingin Anda lakukan 1110 01:00:15,000 --> 01:00:18,000 untuk mendorong desain yang baik. 1111 01:00:18,000 --> 01:00:23,000 >> Setiap pertanyaan terakhir sebelum kita selesaikan? 1112 01:00:23,000 --> 01:00:27,000 Baiklah, pasti merasa bebas untuk-kita akan memiliki label khusus pada Discuss. 1113 01:00:27,000 --> 01:00:30,000 Kami akan memiliki IOS satu, jadi pasti merasa bebas untuk memanfaatkan itu. 1114 01:00:30,000 --> 01:00:34,000 Jika Anda ingin bekerja dengan teman sekelas Anda pada proyek-proyek 1115 01:00:34,000 --> 01:00:37,000 atau membantu mencari tahu beberapa hal iOS random 1116 01:00:37,000 --> 01:00:40,000 merasa bebas untuk email saya, dan pasti teliti semua kode online karena 1117 01:00:40,000 --> 01:00:43,000 hanya dalam kepentingan waktu kami jenis dipoles lebih 1118 01:00:43,000 --> 01:00:45,000 berbutir halus rincian hal. 1119 01:00:45,000 --> 01:00:47,000 Tetapi jika tidak, maka keberuntungan pada proyek Anda iOS, dan saya berharap kami memiliki 1120 01:00:47,000 --> 01:00:53,000 masuknya besar aplikasi di App Store. 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]