Tianyu LIU: Hei, bagaimana itu akan semua orang? Dan ini adalah iOS App pemrograman seminar c obyektif. Dan nama saya Tianyu Liu. Aku junior Lowell sekarang, berkonsentrasi dalam ilmu komputer. Jadi dalam seminar ini saya akan mengajarkan kalian sedikit tentang bagaimana membuat sebuah aplikasi. Yay, bersemangat untuk itu. Jadi sebelum kita bahkan mulai menyelam ke sisi pemrograman yang sebenarnya, mari kita benar-benar cepat berbicara tentang mengapa Anda mungkin ingin membangun sebuah aplikasi iOS? Mengapa iOS begitu mengagumkan? Jadi masalah pertama, yang pertama hal yang cukup mengagumkan bagi kami, terutama karena CS50 sebuah mahasiswa, adalah bahwa iOS menggunakan Objective C. Nah, ada bahasa baru yang disebut Swift, tapi kami tidak akan menggunakannya dalam seminar ini. Jika Anda tertarik Swift, ada adalah seminar independen tentang itu. Tapi Objective C pada dasarnya adalah superset dari C. Arti bahwa segala sesuatu yang Anda gunakan dalam C dapat diterjemahkan ke dalam Objective C sangat mudah. Seperti yang mungkin Anda lihat nanti, bahwa memang ada beberapa sintaks yang sangat dasar, pada dasarnya persis sama, C dan Objective C. Jadi, karena Anda telah mengambil CS50 up sejauh ini, Anda sudah tahu Objective C, setidaknya 40%. Juga, Apple telah benar-benar API kuat untuk iOS. Ada banyak benar-benar gila hal yang dapat Anda lakukan dengan itu. Salah satunya adalah seseorang benar-benar menciptakan sebuah aplikasi iOS untuk mengendalikan mobil, yang cukup menarik. Mungkin helikopter lebih menarik. Tapi itu seberapa kuat API iOS dapat. Dan seperti yang mungkin Anda miliki tahu sekarang, stack overflow mungkin salah satu sumber daya yang paling penting secara online tersedia untuk Anda. Dan kabar baik, untuk setiap Masalah tunggal Anda bisa mungkin pikirkan sambil membangun Anda tugas akhir di Objective C, ada kemungkinan jawaban stack overflow. Ini hanya mengagumkan. Selain itu, iOS benar-benar platform di mana Anda dapat mencapai besar penonton dengan sedikit usaha. Ini tidak seperti Android, di mana semuanya cukup terfragmentasi. Semuanya iOS bersatu. Dan selama Anda buat sebuah aplikasi untuk iPhone, Anda dapat dengan mudah port yang ke iPad, iPad Mini, atau ukuran iPhone yang berbeda. Ini semua benar-benar nyaman. Dan itu hanya benar-benar baik untuk mengesankan teman-teman Anda. Anda hanya bisa memegang iPhone dan memberitahu teman Anda hei, ini adalah aplikasi yang saya buat. Anda dapat melakukannya untuk setiap aplikasi desktop, yang bagus. Baiklah, sekarang mari kita benar-benar mendapatkan ke dalam bahasa Objective C. Jadi kenapa tidak kita mulai dengan beberapa sintaks benar-benar dasar. Seperti yang saya sebutkan sebelumnya Tujuan C Pada dasarnya superset dari C. Jadi banyak sintaks dasar sebenarnya persis sama. Mendeklarasikan variabel dan menambahkan dua variabel bersama-sama persis seperti yang telah kita lakukan di Mario. Tidak ada yang baru di sini. Demikian pula, indekos untuk loop dan kondisi juga sama. Anda dapat melakukan untuk loop seperti yang Anda telah melakukan di Mario [tidak terdengar]. Dan Anda dapat melakukan kondisi seperti apa yang Anda telah melakukan p set sebelumnya. Namun, Objective C tidak sepenuhnya C, dan ada sesuatu yang agak aneh tentang hal itu. Yang pertama adalah bahwa ketika Anda melakukan pemrograman C, Anda biasanya menelepon termasuk dan kemudian nama perpustakaan. Tapi di Objective C Anda menelepon impor itu. Pada dasarnya mengatakan fungsi, hanya nama yang berbeda. Dan string yang sebenarnya sedikit aneh. Anda dapat melihat bahwa pertama hal yang agak aneh adalah bahwa Anda memiliki cukup weird-- sorry-- Anda memiliki NS cukup aneh tanda di sini. Dan hal kedua yang agak aneh adalah Anda memiliki tanda sebelum sebenarnya mendeklarasikan string. Jadi pada dasarnya tanda menandakan bahwa string tidak hanya string, sebenarnya obyek. Kami akan menjelaskan yang kemudian jadi tidak panik jika Anda tidak memahami apa artinya. Dan pencetakan untuk konsol sedikit berbeda karena di C kita sebut printf, tapi di Objective C kita sebut [tidak terdengar]. Anda mungkin bertanya-tanya apa itu. Itu pada dasarnya adalah printf, hanya bahasa yang berbeda. Tepat penggunaan yang sama, persis fungsi yang sama. Nah ternyata Tujuan C sebenarnya memiliki ns awalan di hampir segalanya, setiap jenis data dasar, NSString, NSArray, NSDictionary. Alasannya adalah bahwa ns sebenarnya adalah singkatan untuk Langkah Selanjutnya, yang merupakan perusahaan yang Steve Jobs telah didirikan, yang merupakan perusahaan di mana Bahasa Objective C lahir. Jadi ini pada dasarnya adalah tradisi. Aku tahu itu sedikit aneh, tapi itu Apple. Jadi sesuatu yang bahkan lebih aneh dari itu adalah deklarasi fungsi. Hal ini sangat berbeda dari apa yang kita lihat di C, karena di sini sebenarnya tidak terlihat seperti C lagi. Apa yang Anda miliki di sini-oleh cara ini bukanlah titik peluru, ini adalah tanda minus. Anda memiliki kurung tanda minus batal dan kemudian nama fungsi. Mari kita katakan jika kita memiliki hello world, maka jenis kembali akan batal karena kita tidak kembali. Apa yang akan benar-benar aneh adalah bahwa ketika Anda memiliki lebih dari satu parameter melewati ke dalam fungsi yang sama akan benar-benar aneh seperti yang ditunjukkan di sini. Kami memiliki nama metode, disebut addInt untuk [tidak terdengar] dan kami melewati satu parameter. Tapi setelah itu, kita harus lebih panggilan nama metode dengan. Dan setelah dengan kita lewat parameter kedua. Ini sebenarnya sedikit aneh, tapi semua fungsi deklarasi ini mengikuti pola yang sama seperti ini. Kami memiliki tanda minus untuk memulai. Tanda minus bisa menjadi tanda plus kadang-kadang didasarkan pada jenis metode itu. Metode ini pada dasarnya Nama lain untuk fungsi. Dan kita akan menjelaskan bahwa kemudian ketika kita sedang berbicara tentang objek pemrograman berorientasi. Pertama, anda menentukan pengembalian ketik dalam kurung, setelah itu datang nama metode. Anda melewati satu parameter. Dan jika Anda memiliki lebih parameter Anda perlu untuk memperpanjang nama metode dan pada dasarnya menulis sesuatu yang lebih di sini. Bisa jadi apa pun yang Anda inginkan. Dalam kasus kami itu dengan. Tapi Anda bisa mengatakan akhir, atau, atau, atau abc penuh bar, apa pun yang Anda inginkan. Dan kemudian setelah itu Anda melewati parameter b. Ini adalah benar-benar aneh konvensi tapi kami akan melihat mengapa Apple ingin untuk melakukan itu dengan sangat cepat. Jadi bagaimana Anda memanggil fungsi? Memanggil fungsi di Objective C juga berbeda dari C. Sebenarnya, memanggil Fungsi di Objective C lebih seperti Anda sedang berbicara dengan seseorang. Di sini kita memiliki diri, yang disebut objek. Anda pada dasarnya memberitahu objek diri untuk mengatakan "Hello World!" Itulah bagaimana memanggil fungsi. Sebuah objek dan nama metode dikombinasikan satu sama lain. Dan ini adalah di mana ekstensi aneh untuk nama metode yang benar-benar datang ke dalam bermain. Mari kita lihat contoh kedua. Kami hanya mendefinisikan metode yang disebut addInt dengan bla bla bla. Jadi dalam hal ini ketika Anda menelepon bahwa [tertentu? Pesan?] itu akan terlihat seperti addInt diri: 10 dengan: 2. Kedengarannya seperti bahasa Inggris. Meskipun fungsi deklarasi fungsi aneh, titik Objective C Pola deklarasi metode, adalah bahwa ketika Anda menelepon fungsi atau metode itu akan terdengar seperti bahasa Inggris yang sebenarnya. Jadi itu sangat intuitif setelah Anda masuk ke dalamnya. Terutama dalam hal ini, di mana Anda pada dasarnya dapat melihat bahwa nama fungsi semacam mendokumentasikan sendiri. Anda tidak perlu lebih banyak penjelasan untuk melihat apa yang sebenarnya terjadi, apa tepat satu parameter lakukan. Di luar itu, mari kita bicara sedikit sedikit tentang pemrograman berorientasi objek. Pemrograman berorientasi objek adalah salah satu pemrograman dasar teknik atau pola yang digunakan oleh Objective C. Tujuan C disebut Objective C, tidak C, untuk alasan yang benar-benar baik. Jadi sebelum kita masuk ke Sintaks C obyektif, Mari kita benar-benar cepat melihat apa sebenarnya adalah obyek. Kita mungkin telah melakukan sesuatu seperti objek sebelumnya, yang disebut struct ketika Anda menerapkan pohon atau linked list atau [? mencoba. ?] Jadi, itu dasarnya seperti struct, tapi jauh lebih kuat dari itu. Sebuah objek memiliki metode dan properti. Metode pada dasarnya fungsi. Pada dasarnya fungsi bahwa khusus untuk objek tertentu. Dan sifat dasarnya bidang yang Anda tentukan dalam struct. Jadi untuk setiap objek tunggal kami memiliki beberapa properti yang memiliki beberapa variabel yang khusus untuk objek. Dan kami memiliki beberapa fungsi yang juga khusus untuk objek. Dan fungsi disebut metode dan variabel disebut sifat. Ini hanya sebuah nama indah. Sementara Bahkan Anda, setiap tampilan tunggal Anda lihat saat Anda membuka sebuah aplikasi iOS, katakan saja Twitter atau Facebook, setiap tampilan tunggal yang Anda lihat adalah sebuah objek. Dan bahkan seluruh app objek untuk memulai dengan. Konsep yang sangat menarik. Dan mengapa kita ingin objek pemrograman berorientasi? Jadi bisa dibayangkan bahwa ketika Anda Program itu akan cukup rumit. Katakan saja ketika Anda melaksanakan catur, logika akan akan benar-benar rumit. Anda memiliki 36 berbeda potongan, sehingga jika Anda ingin menulis logika untuk semua 36 bagian yang berbeda dalam catur, yang akan menjadi banyak fungsi dan variabel yang berbeda. Ini banyak masalah. Dan mungkin Anda akan menulis metode yang berbeda atau fungsi yang berbeda untuk masing-masing bagian untuk persis mengontrol apa yang mereka lakukan. Tapi jika Anda melakukannya berorientasi objek pemrograman, semua potongan-potongan ini dapat disarikan ke dalam satu objek tunggal. Dan objek akan memiliki beberapa kesamaan properti, seperti apa jenis potongan itu? Apa warna itu? Bagaimana bisa bergerak? Dan dengan cara itu Anda memiliki sangat disederhanakan logika itu. Jadi itu hanya cara yang sangat baik untuk membuat program yang rumit, dan hubungan hirarkis dalam program, sangat sederhana. Seperti kita akan melihat mengapa sangat cepat ketika kita benar-benar melakukan programming-- ketika kita benar-benar melakukan kode S pemrograman sesi kemudian. Nah selain itu, object oriented programming hanya menyenangkan. Anda harus merancang objek Anda sendiri. Anda harus merancang apa terlihat seperti sendiri. Tidak ada jawaban yang tepat untuk itu. Dan itu benar-benar menarik. Jadi dalam pemrograman berorientasi objek, dua konsep dasar akan menjadi kelas dan contoh. Kelas A pada dasarnya adalah template untuk objek. Dan contoh pada dasarnya satu objek tertentu. Katakan saja Anda membuat kue. Dalam hal ini, setiap satu Cookie Anda benar-benar berakhir dengan akan menjadi obyek. Tapi piring kue yang Anda gunakan untuk memanggang semua cookie akan kelas. Kelas A pada dasarnya adalah template. Dan contoh akan menjadi salah satu tertentu objek diciptakan dari kelas tersebut. Dan sebuah contoh akan dibuat berdasarkan kelas deklarasi, seperti yang kita akan melihat dalam slide nanti. Jadi mari kita benar-benar melakukan benar-benar contoh cepat [tidak terdengar]. Katakanlah kita menyatakan obyek untuk kucing. Objek harus have-- kelas kucing harus memiliki beberapa properti dan metode. Apa jenis properti seharusnya kelas have-- harus kucing miliki? Misalnya, warna, usia dan berkembang biak, mereka akan variabel yang spesifik untuk setiap kucing. Dan mereka adalah beberapa hal yang kita gunakan untuk menggambarkan kucing. Apa metode, atau apa yang bisa kucing lakukan? Beberapa contoh cepat akan mengejar mouse, makan ikan atau hanya meow. Ini adalah benar-benar cepat Contoh kelas kucing. Dan benar-benar spesifik objek kucing akan kucing di mana kita tentukan warna, usia dan berkembang biak. Dalam hal ini, objek kami adalah tidak lagi kelas lagi. Kami salin template dari kelas dan kita tentukan setiap informasi spesifik dengan objek tertentu untuk membuatnya mandiri. Dan ketika Anda menelepon metode dalam sebuah obyek, Anda hanya memanggil meow pada objek, yang merupakan kucing yang baru saja dibuat. Mungkin Anda akan mencetak sesuatu seperti "Hello World! Meong. " Cukup lucu. Baiklah, mari kita masuk ke beberapa rincian dan melihat apa sebenarnya yang menerjemahkan menjadi ada program iOS. Jadi dalam pemrograman iOS setiap satu kelas akan dilaksanakan dalam dua file. Satu file di sini, yang disebut antarmuka. File lain di sini, yang disebut implementasi. Biasanya antarmuka akan memiliki extension.h seperti yang kita lihat di perpustakaan C. Dan file implementasi adalah akan memiliki extension.n. Ini agak aneh. Tapi .n berarti sebenarnya c, tidak ada Perbedaan mendasar antara orang-orang dua. Jadi dalam hal ini, kita dapat melihat bahwa kita menyatakan antarmuka, Cat: object. Itu disebut warisan. Kami pada dasarnya mewarisi kelas kucing dari kelas objek. Jadi setiap properti dan metode yang sebelumnya didefinisikan dalam kelas objek akan ditentukan secara otomatis dalam kelas kucing juga. Selain itu, kita mendefinisikan warna, berkembang biak, dan usia, tiga variabel. Yang benar-benar terlihat seperti sesuatu yang telah Anda lakukan sebelumnya. Sepertinya struct. Itu pada dasarnya adalah sintaks untuk struct deklarasi, dan itu benar-benar benar. Dan karena saya sebutkan sebelumnya, perbedaan struct dan objek, salah satu perbedaan mendasar adalah bahwa obyek memiliki metode, sedangkan struct hanya memiliki variabel. Jadi selain sifat atau variabel yang kita buat untuk objek, kita tentukan beberapa metode. Mari kita katakan di sini kita memiliki dua metode, satu adalah meong, satu sama lain adalah tikus mengejar. Kita mungkin ingin melewati parameter berdasarkan metode kami sebelumnya Pola deklarasi. Anda mungkin ingin melewati mouse. Dan Anda mungkin ingin untuk kembali menandakan bool jika kucing Anda telah berhasil tertangkap mouse atau tidak. Ini adalah antarmuka, tapi kita bisa melihat bahwa antarmuka sebenarnya tidak melakukan apa apa. Ini hanya memberitahu program apa exists-- apa yang ada di kelas kucing. Jadi dalam rangka untuk program untuk melakukan sesuatu, kita perlu memiliki file implementasi. Jadi di sini, hal pertama yang kita lakukan adalah jelas kita mengimpor antarmuka. Setelah kita mengimpor antarmuka, kita mendefinisikan metode. Mari kita katakan di sini meow hanya akan mencetak "Halo Dunia!" ke konsol. Dan setelah implementasi File, kita cukup banyak dilakukan. Ini pada dasarnya adalah sebuah kelas deklarasi untuk satu kelas. Jadi sekarang pertanyaannya menjadi, bagaimana Anda mendeklarasikan variabel? Cara Anda menggunakan kelas untuk menciptakan objek di Objective C yang tertulis di sini. Anda pertama kali menentukan bahwa ini adalah pointer kucing, karena setiap objek di Objective C akhirnya diimplementasikan sebagai pointer. Dan Anda memanggil kelas, menyebut mereka sebagai alokasi, yang pada dasarnya adalah malloc, mengatakan sistem operasi yang Anda membutuhkan ruang memori untuk objek ini. Setelah itu Anda memiliki objek sudah dan Anda hanya menginisialisasi itu. Ini hanya konvensi. Aku tahu itu sedikit aneh, tapi ini sebenarnya bagaimana Apple melakukan hal-hal. Menetapkan properti ini sebenarnya cukup sederhana. Ini sangat mirip dengan apa yang Anda lakukan ketika Anda menetapkan beberapa spesifik bidang dalam struct. Anda hanya perlu variabel nama, nama properti, dan menetapkan nilai tertentu untuk itu. Dan memanggil metode ini sangat mirip. The memanggil metode adalah pada dasarnya apa yang saya bicarakan untuk memanggil metode apapun di Objective C. Anda melewati sebuah objek, dalam hal ini akan menjadi myCat, dan Anda lewat nama metode. Seolah-olah Anda sedang berbicara dengan objek, myCat, yang harus Anda meow. Hal ini cukup menarik. Setelah itu, ada satu pola desain yang lebih penting bahwa kita perlu bicara tentang sebelum sampai ke kode S yang sebenarnya. Itu pola desain disebut event driven programming. Ini juga mungkin salah satu yang paling ide-ide dasar dalam pemrograman iOS. Jadi Anda mungkin tidak tahu persis apa yang adalah pemrograman event driven, tapi itu tidak benar-benar menakutkan. Nah pada kenyataannya, Anda memiliki sudah melakukan itu sebelumnya. Ini adalah salah satu baris Anda mungkin pernah sudah ditulis di babak [tidak terdengar] dari CS50, google.maps.event.addListener (marker, "Klik", function () {}) :. Dengan menelepon baris ini Anda dasarnya memberitahu komputer bahwa setiap kali acara yang disebut "Klik" terjadi pada penanda, menggunakan fungsi tersebut. Hal ini sangat berbeda dari apa yang Anda lakukan di mario.c. Dalam mario.c Anda hanya menjalankan program sekali, itu memberikan Anda output, dan Anda sudah selesai. Ini semacam seperti salah satu program tembakan. Program didorong acara sangat, sangat berbeda. Mari kita bayangkan, jika Facebook adalah salah satu yang Program tembakan itu tidak benar-benar baik. Anda hanya pergi ke Facebook sekali dan hal itu dilakukan. Ini memberi Anda beberapa output dan Anda tidak pernah mendapatkannya kembali. Anda tidak pernah punya apa-apa lagi. Jadi di sini, terutama pola yang kita gunakan adalah event driven, sehingga setiap fungsi akan ditangkap berdasarkan apa peristiwa telah terjadi. Sebagai contoh, jika kita memiliki tombol dan kita tentukan bahwa setiap kali tombol yang diklik, memanggil fungsi yang disebut "Hello World!" Dengan cara itu kita bisa benar-benar mengelola fungsi logika mengalir dengan cara yang sangat fleksibel. Pengguna dapat melakukan atau memanggil fungsi yang telah dipanggil. Ini benar-benar didasarkan pada apa yang pengguna lakukan. Jadi kita dapat melihat bahwa ini adalah sebenarnya jauh lebih baik daripada mario.c. Dan kabar baiknya adalah bahwa hal itu sebenarnya bukan konsep baru. Kalian sudah melakukan bahwa dalam masalah terakhir yang ditetapkan. Jadi di Objective C ada tiga diagram yang berbeda untuk pemrograman event driven. Diagram pertama adalah disebut tindakan sasaran, di mana Anda mengikat tombol pers dengan beberapa fungsi. Katakan saja, setiap kali Anda mengklik beberapa tombol, Anda memanggil beberapa fungsi. Ini adalah tindakan target yang sangat sederhana. Yang kedua adalah sebenarnya yang paling sulit, itu disebut delegasi pada protokol. Kami akan menjelaskan yang rinci nanti. Dan cara ketiga adalah pemberitahuan. Ini sebenarnya tidak sangat penting sejauh yang kita khawatir, karena kesempatan bahwa Anda akan menggunakan pemberitahuan dalam proyek akhir Anda cukup rendah. Jadi kita akan melewatkan bagian. Dan kita akan menyelam dalam delegasi pada protokol. Jadi apa sebenarnya protokol? Atau apa sebenarnya delegasi? Mari kita bicara tentang protokol untuk memulai dengan. Protokol hanyalah peristiwa. Tapi peristiwa ini diberikan kepada Anda oleh Apple untuk memulai dengan. Misalnya, aku tidak benar-benar yakin berapa banyak dari Anda orang menggunakan original Apple surat aplikasi atau kontak, tapi setiap kali Anda menggulung meja dan tekan sel tertentu di atas meja, yang merupakan acara. Dan jika Anda ingin melakukan acara sendiri, itu sebenarnya sedikit sulit. Jadi Apple telah mengingat bahwa bahkan Anda sehingga Anda bisa langsung menggunakan acara untuk melakukan sesuatu pada Anda sendiri. Protokol sebenarnya benar-benar, benar-benar banyak digunakan di Objective C. Nah di Bahkan, setiap aplikasi tunggal memiliki sesuatu yang tertangkap delegasi app. Di dalam halus adalah semua protokol untuk memuat aplikasi. Mari kita katakan ada acara untuk aplikasi melakukan beban. Jadi apa yang harus terjadi setelah Anda sudah menciptakan sebuah aplikasi, setelah Anda membuka aplikasi, setelah Anda menutup aplikasi, atau setelah Anda menempatkan iPhone untuk tidur. Ini semua peristiwa yang memiliki telah diberikan kepada Anda. Dan awalnya dalam partikel-partikel ini tidak akan ada implementasi. Apple baru saja mengatakan kepada Anda bahwa fungsi ini akan terjadi ketika beberapa peristiwa terjadi, tapi apa yang Anda lakukan dengan itu Fungsi benar-benar terserah pada Anda. Delegasi pada dasarnya mengatakan kelas Anda harus menangani protokol ini. Ini sedikit membingungkan, tetapi ini akan menjadi lebih jelas ketika kita melakukan kode dalam tindakan. Delegasi pada protokol sebenarnya mekanisme yang sangat kuat dalam arti bahwa jika kita melakukan delegasi untuk kelas tertentu, kita pada dasarnya dapat menangani semua jenis kegiatan menggunakan kelas apapun yang kita miliki, alat yang sangat nyaman. Jadi salah satu contoh cepat untuk Delegasi pada protokol akan menjadi apa yang saya hanya berbicara tentang. Protokol ini secara khusus disebut tableview [tak terdengar] pilih peran di [? Indeks?] [? masa lalu. ?] Jadi seorang ini Acara yang akan tertangkap ketika Anda sebenarnya tekan tertentu sel dalam tableview Anda, katakan saja di email Anda atau dalam aplikasi kontak Anda. Di dalam fungsi ada awalnya melakukan apa-apa. Fungsi tidak melakukan apa-apa secara default. Tapi Anda dapat menentukan apa fungsi tidak, mengingat apa yang Anda inginkan dari aplikasi Anda. Alat yang sangat nyaman. Dan dengan semua itu sedang berkata, saya pada dasarnya mencakup beberapa sintaks yang sangat dasar dan Konsep dasar untuk Objective C pemrograman, dan kita dapat melakukan beberapa s kode. Jauh lebih menarik. Jadi s kode sebenarnya sedikit luar biasa ketika Anda membukanya untuk pertama kalinya. Salah satu catatan singkat, jadi jika Anda ingin melakukan pengembangan iOS, Saya sangat merekomendasikan Anda memiliki Mac. Karena melakukan pengembangan iOS pada Windows benar-benar, benar-benar keras. Ini bisa dilakukan, tapi itu benar-benar sulit. Dan Anda pasti melakukan tidak ingin menggunakan g edit. Jadi di s kode yang kami miliki beberapa bidang yang berbeda. Ketika Anda pertama kali membuka s kode Anda akan melihat area navigasi, yang pada dasarnya menunjukkan semua file yang ada di proyek Anda saat ini. Anda memiliki area toolbar, yang pada dasarnya mengelola pandangan, atau sedikit cepat alat tentang s kode itu sendiri. Dan ini adalah area editor yang sebenarnya. Daerah ini g mengedit sangat mirip, tapi jauh lebih baik daripada g edit. Dan di daerah ini benar, adalah disebut daerah utilitas. Daerah menjadi benar-benar berguna ketika Anda membuat antarmuka atau menetapkan satu pengaturan cepat untuk aplikasi Anda. Dan daerah terakhir adalah debugging. Daerah ini berisi konsol. Jadi, setiap kali Anda mengatakan printf, atau NSLog dalam kasus kami, semua hasil Anda akan dicetak di sini. Baiklah? Saya kira kita bisa benar-benar cepat melakukan contoh untuk pemrograman iOS. Dan mari kita benar-benar membuka kode up s. Jadi setiap kali Anda membuka kode up s, itu akan muncul sesuatu seperti itu. Ini akan meminta Anda apa yang ingin kamu lakukan? Apakah Anda ingin memulai sesuatu acak, taman bermain, pada dasarnya Anda hanya dapat menguji kode tanpa benar-benar melakukan untuk aplikasi apapun. Apakah Anda ingin membuat proyek baru? Atau apakah Anda ingin melanjutkan bekerja pada proyek yang ada? Dalam kasus kami, kami akan untuk membuat proyek baru. Jadi itu benar-benar bagus, s kode sebenarnya memiliki sudah memberikan beberapa template untuk membuat objek. Jika Anda ingin melakukan permainan, s kode sebenarnya memiliki template game untuk Anda, memiliki aplikasi berbasis halaman, aplikasi berbasis tab. Dalam hal ini, kita akan untuk melakukan sesuatu yang sangat sederhana, dan kita akan menggunakan satu aplikasi tampilan. Setelah itu hanya apa yang Anda ingin menyebutnya produk Anda, dan siapa namamu, apa pengenal Anda, dan bahasa apa yang kamu gunakan. Di sini kita tidak ingin periksa menggunakan Core Data. Core Data pada dasarnya adalah databasing iOS. Jika Anda melakukan Core Data, s kode akan menentukan kelas yang lebih rumit banyak untuk Anda. Jadi untuk menjaga semuanya sederhana, kami hanya akan melakukannya tanpa Core Data sekarang juga. Masalah kita akan menjadi gunakan adalah itu-- masalah kita akan membuat adalah bahwa kita pada dasarnya ingin mengimpor Mario dari C untuk sebuah aplikasi iOS. Jadi mari kita sebut bahwa Mario-iOS. Tentu saja Anda menentukan apa yang Anda ingin dimasukkan ke dalam proyek Anda. Dan di sana kita pergi. Jadi ini adalah sedikit luar biasa, tapi ini benar-benar apa yang baru saja kita lihat pada slide. Dan daerah pertama yang kita lihat sekarang pada dasarnya adalah konfigurasi proyek. Jadi segala sesuatu yang Anda ingin lakukan proyek, jenis perangkat, katakan saja apa jenis perangkat Anda ingin aplikasi Anda untuk muncul di? Apakah iPhone, iPad atau yang universal? Jadi orientasi perangkat, semua hal ini. Tidak terlalu penting, tapi bisa, tapi ini adalah tempat di mana Anda mengatur proyek Anda jika Anda benar-benar ingin menyebarkan ke toko Apple. Baiklah, mari kita lihat sesuatu yang ada di dalam kode kita. Mari kita pergi melalui file navigator. Dan ini semua file yang sudah datang dengan template, sangat bagus. Jadi ketika kita klik salah satu dari mereka ini adalah apa yang tampak seperti. Sangat mirip dengan g edit. Tapi Anda bisa melihat bahwa sintaks mungkin sedikit lebih baik. Dan itu sebenarnya jauh lebih kuat daripada g editing. Dan Anda bisa auto lengkap banyak hal untuk Anda, seperti yang akan kita lihat dengan sangat cepat. Mari kita membuka area debugging juga. Baiklah, seperti yang kita lihat, konsol ada di sini. Ini adalah apa yang Anda akan melihat di mana Anda berada di printf atau nsloging sesuatu. Jadi tanpa basa-basi lagi, mari kita benar-benar mengkompilasi aplikasi dan melihat apa yang terjadi. Salah satu fitur penting untuk s kode, adalah bahwa s kode dilengkapi dengan simulator iPhone. Jadi Anda tidak perlu memiliki iPhone untuk mencoba proyek Anda, s kode dapat mensimulasikan bahwa untuk Anda, seperti yang kita bisa lihat sekarang. Ini cukup bagus. Ini mengambil sedikit sedikit waktu untuk mengkompilasi dan pada dasarnya kami memiliki aplikasi kosong, yang benar-benar tidak apa-apa. Tapi mengkompilasi. Ini cukup mengagumkan. Ini jauh lebih baik daripada C, ya? Baiklah, kemudian mari kita mencoba untuk menambahkan sesuatu. Salah satu file yang sedikit aneh di sini disebut storyboard. Ini adalah benar-benar besar, Fitur mengagumkan untuk s kode. Karena dalam s kode, Anda benar-benar bisa tarik dan drop elemen ke antarmuka dan akan langsung muncul. Mari kita coba. Kami menjatuhkan label di sini, "Hello World !!!" Kita bisa memusatkan itu. Cukup keren. Sekarang mari kita jalankan berhenti simulasi ini. Di sini kita memiliki "Hello World !!!" Kami bahkan tidak melakukan coding apa pun. Apa sih yang terjadi? Ini adalah bagaimana kuat Interface Builder dapat. Seseorang bahkan mengatakan bahwa Mungkin Anda hanya dapat menyelesaikan sebuah aplikasi tanpa menulis mungkin seribu baris kode hanya dengan menggunakan Builder Interface. Tapi itu mungkin tidak cara terbaik untuk melakukannya. Sekarang mari kita benar-benar turun ke coding. Jadi struktur untuk file sebenarnya benar-benar menarik karena, seperti yang Anda dapat lihat, ada ada fungsi utama di mana saja. Lihat? Seperti yang telah disebutkan sebelumnya, Anda dapat melihat bahwa ini adalah file implementasi untuk kelas tertentu. Tetapi tidak ada di mana saja utama. Jadi di mana utama? Sebenarnya, ada utama, tetapi utama sebenarnya tersembunyi dari Anda. Utama di sini. Itu tampak akrab. Jadi pada dasarnya apa iOS melakukan dalam main adalah bahwa setiap kali utama adalah disebut, yang pada dasarnya adalah setiap kali aplikasi dijalankan, itu membuat objek disebut AppDelegate. Seperti yang saya sebutkan sebelumnya, seluruh yang app sebenarnya obyek dengan sendirinya. Jadi dengan cara ini, pada dasarnya aplikasi iOS yang memerintahkan compiler yang OK, aku akan membuat produk yang disebut AppDelegate, dan itu akan menjadi aplikasi saya. Jadi, Anda perlu untuk pergi melalui AppDelegate yang dan melihat apa yang orang yang melakukan. Pekerjaan saya dilakukan bagi saya. Dan di AppDelegate Anda dapat melihat bahwa ada beberapa fungsi yang benar-benar aneh, Yah, sebenarnya metode, yang Apple telah memberi Anda. Apa ini? Ini sebenarnya hanya protokol yang saya bicarakan. Jadi ini adalah peristiwa bahwa Apple telah memberi Anda untuk memulai dengan. Tidak ada dalam beberapa fungsi sekarang, tetapi jika kita ingin menginisialisasi sesuatu untuk aplikasi kita sebelum masuk ke menampilkan pandangan, kami melakukannya di sini. Anda hanya dapat membaca nama dan kurasa Acara ini sebenarnya sangat jelas. Jadi sekarang utama telah menciptakan obyek untuk AppDelegate. Dan apa AppDelegate yang akan dilakukan sebenarnya juga tersembunyi dari Anda. AppDelegate akan mulai memuat saham ViewController. Jadi pada dasarnya akan mulai memuat semua pandangan yang Anda miliki dan hanya membuat tampilan berdasarkan hirarki. Jadi dalam hal ini kita hanya memiliki satu tampilan, yang ada di sini. Jadi itu adalah satu-satunya pandangan yang akan dipanggil. ViewController logika di sini. Ini adalah kode yang benar-benar mengontrol pandangan kita hanya melihat. Baiklah, mari kita lakukan sesuatu di sini. Jadi viewDidLoad terdengar seperti sebuah acara, padahal sebenarnya ini juga delegasi, ini juga protokol. Jadi apapun pandangan dimuat, segala sesuatu di dalam fungsi akan dipanggil. Dalam hal ini kita harus melihat "Hello Tianyu! "Jika kita menjalankan program. Sudah mulai sedikit lambat kompilasi file storyboard. Baik memang, kita melihat output untuk itu. Hal ini cukup keren. Sekarang mari kita benar-benar melakukan Mario. Aku akan menentukan berfungsi sangat cepat. marioWithLevels: hasil (int) tingkat. Baiklah, ini sebenarnya adalah mengagumkan fitur s kode penyelesaian otomatis. Jadi, ketika Anda menulis untuk dan ketik masuk, ia telah menyerah template untuk Anda, yang cukup keren. Yang harus terlihat benar-benar akrab bagi kalian. Maaf, itu salahku. Baiklah, keren. Logika yang harus melihat benar-benar akrab untuk kalian, terutama hanya Mario. Tapi sekarang kita akan mencetak ke konsol setiap kali, karena kami ingin tetap menjaga melacak apa yang kita cetak. Kita akan menggunakan hasil entah bagaimana kemudian, untuk menampilkan cetak keluar mengakibatkan pengguna. Jadi, bukannya kami hanya nslogging segalanya, yang kita menyimpan segala sesuatu menjadi hasil pemanggilan fungsi, namun logika adalah persis sama. Setelah kami selesai, kami hanya mencetak hasil kami. Dan di sini bukannya mencetak saya Nama, kita akan memanggil fungsi. Mari kita lihat apa yang terjadi. Ups, jelas. Kami memiliki bagus sedikit piramida di sini. Ini pada dasarnya adalah C, kami hanya memanipulasi mana Anda memanggil fungsi dan bagaimana fungsi terlihat seperti. Tidak ada yang berbeda. Tapi ini benar-benar tidak sangat menarik di sini, karena kita tidak melihat apa pun dari iPhone app. Jadi jika Anda benar-benar memiliki iPhone app-- jika Anda benar-benar memiliki Mario iOS hak sekarang, Anda tidak akan untuk melihat apa-apa yang ada hubungannya dengan Mario karena semua keluaran yang menjadi konsol tersembunyi dari pengguna. Ini adalah apa yang Anda lihat, yang "Hello World !!!" Tidak baik. Sekarang mari kita coba untuk membuat pengguna melihat apa sebenarnya kita mencetak. Jadi kita tidak perlu label lagi. Mari kita mencoba dan mencari tahu sesuatu lain yang dapat berguna. Ada sebenarnya adalah salah satu elemen yang disebut bidang teks, yang bisa akan sangat membantu kami. Pada dasarnya menampilkan daerah teks yang dapat diedit. Sehingga terlihat benar-benar membantu. Sekarang mari kita tarik dan jatuhkan. Wow, kami memiliki pandangan teks dalam pandangan kami, benar-benar mewah. Itu sedikit terlalu besar. Mari kita membuatnya lebih kecil. Memasukkannya ke pusat. Membuatnya lebih kecil juga. Sekarang kita memiliki pandangan teks, yang kita bisa digunakan untuk menampilkan hasil akhir kami. Tapi saat itu pasti tidak akan bekerja karena ada no-- yang ViewController kita hanya didefinisikan tidak tahu bahwa ada tampilan teks di luar sana. Jadi kita perlu entah bagaimana menghubungkan tampilan teks kita hanya dibuat dengan kelas yang telah datang dengan kami. Cara kita melakukannya adalah sebenarnya benar-benar ajaib. Jadi membuka storyboard. Ada khusus [tidak terdengar] disebut [? asisten?] [tidak terdengar]. Ketika Anda mengklik itu, itu akan membuka dua file. Salah satunya adalah kelas dan yang lain adalah pandangan yang sesuai untuk itu. Ini sangat, sangat membantu. Dan mari kita berjalan melalui file h. Kontrol, ini [tidak terdengar] logika. Tekan Control dan drag Tampilan teks ke dalam deklarasi. Kita akan memanggil outputView itu. Terhubung. Jadi di sini kita telah mengumumkan baru properti untuk kelas ViewController kami. Dan properti baru hanya tampilan teks kami telah menciptakan di gedung antarmuka. Jadi dengan cara itu kita bisa Akses semua data dan memanipulasi segala sesuatu yang ada di dalam tampilan output, yang mengagumkan. Jadi dalam kode kami yang sebenarnya, mari kita melakukan sesuatu dengan itu. Jadi, kali ini ketika kita berada seperti pencetakan out hasil akhir untuk Mario, kami berada di tidak masuk apa-apa. Maksudku kita bisa menjaga pernyataan logging. Selain itu, kami mengirim pembacaan kita hanya diciptakan untuk tampilan output, yang adalah UI textview baru saja kita buat. Sekarang mari kita lihat apa yang terjadi. Wow. Kami memiliki piramida di app sekarang. Sehingga pengguna dapat melihat output kami karena kami telah menyalin output dari kode kita antarmuka kami. Itu cukup bagus. Ini sebenarnya tidak menarik karena kita can-- Semua aplikasi yang dilakukan adalah menunjukkan piramida untuk Anda, dan tidak ada yang dapat Anda lakukan tentang hal itu. Ini tidak terlalu menarik. Jadi sekarang mari kita membuat tombol yang akan menghapus pandangan. Tampaknya tombol akan membantu. Drag dan drop. Tombol satu. Tombol dua. Jadi ketika kita klik kiri tombol, tampilan harus jelas. Harus ada apa-apa di layar. Dan ketika kita klik tombol kanan, Mario, pandangan akan muncul lagi. Jadi cara ini kami juga melakukan hal ajaib, kontrol dan tarik dengan deklarasi kelas di asisten director-- dalam asisten penampil. Dalam hal ini kita menentukan bahwa yang harus menjadi tindakan. clearMario. Jadi di sini kita telah membuat suatu tindakan yang disebut clearMario, yang merupakan metode yang akan dipanggil setiap kali kita menekan tombol yang jelas. Jadi sebenarnya kode kita, mari kita menempatkan teks output dan lihat output menjadi apa-apa, dan dengan cara itu itu akan tampak jelas. Selain itu, mari kita ciptakan Metode lain yang disebut runMario. Oh maaf, yang seharusnya tidak menjadi properti. Baiklah, yang seharusnya menjadi tindakan juga. Dan ketika fungsi yang disebut, kami hanya menjalankan Mario sepuluh. Mudah-mudahan yang akan baik-baik saja. Apakah itu kompilasi? Iya Nih. Sekarang kita memiliki pandangan. Kami memiliki output. Dan mari kita lihat apa yang terjadi. Yang sudah pergi. Ini kembali lagi. Jadi di sini kita telah ditentukan apa fungsi akan dipanggil saat kita ketik sesuatu, ketika kita menekan tombol tertentu. Ini pada dasarnya adalah Skema tindakan Target untuk event driven pemrograman di Objective C. Selain itu, itu tidak terlalu menarik karena kita tidak bisa benar-benar mengubah seberapa tinggi piramida akan, jadi kita mungkin ingin entah bagaimana mendapatkan input dari user dan mengubah ketinggian piramida berdasarkan apa yang mereka produksi. Jadi kita akan melakukan itu. Jadi saat ini ketika kita sebut runMario, kita tidak hanya menyebut Mario langsung. Judul yang satu ini. Delegasi. Hal ini sangat menarik. Apa delegasi? Aku akan menempatkan diri di sini. Dan kita akan melihat apa artinya nanti. Jadi di sini kita pada dasarnya menciptakan contoh spesifik disebut peringatan UI Tampilan. Pandangan UI peringatan adalah pada dasarnya apa yang akan Anda lihat setiap kali sesuatu muncul dan meminta Anda untuk memasukkan, seperti apa yang akan terjadi ketika Anda mencoba untuk membeli sesuatu di toko aplikasi. Selain itu, setelah Anda menciptakannya, kita hanya menunjukkan waspada. Baiklah, mari kita cepat Tes akan bekerja atau tidak. Itu sangat dingin. Sekarang mari kita benar-benar membuat field input untuk waspada UI. Ini adalah bagaimana kita melakukan itu. Dan kita harus memiliki Tampilan masukan untuk waspada. Keren banget. Katakan saja 10. Ini tidak melakukan apa-apa yang benar sekarang karena panggilan sebenarnya tidak berubah untuk melaksanakan mario. Jadi ini telah menjadi sedikit Agak aneh karena setiap kali kita menekan tombol bawah, setiap kali kita tekan tombol pada tampilan waspada, sesuatu harus terjadi, tapi itu tidak terjadi. Bagaimana kita menangkap itu? Bagaimana kita tahu bahwa pengguna telah diberhentikan pandangan peringatan dan sudah masuk nomor, karena sekarang tidak ada yang benar-benar terjadi. Nah, sudah bisa anda duga benar, delegasi. Jadi di samping semua deklarasi ini, kita perlu menambahkan delegasi baru untuk disebut UI tampilan peringatan delegasi. Sehingga setiap interaksi atau acara bahwa kita akan memiliki dengan tampilan UI peringatan akan ditangani oleh kelas kami juga. Jadi selain itu, akan waspada tombol tampilan klik pada indeks. Ini tercapai. Jadi dalam hal ini kita harus already-- jadi kita harus menemukan sebuah protokol yang akan menangani event saat kita klik tombol Selesai pada tampilan siaga. Jadi setiap kali kita mengabaikan pandangan waspada, ini harus terjadi. Mari saya hanya menguji dengan sangat cepat. Baik memang, kami telah sampai di sini. Jadi di sini, apa yang kita tidak akan benar-benar mendapatkan sebenarnya mendapatkan the-- Jadi kita ingin keluar teks yang kita miliki sebelumnya masuk dalam tampilan peringatan. Dan berdasarkan teks, kami akan menampilkan Mario. Hal ini sangat cepat ternyata jika benar-benar bekerja atau tidak. Jadi dalam hal ini, jika kita masukan, katakanlah, 10, kita harus melihat 10. Sangat baik, kami memiliki beberapa di sini. Itu cukup bagus. Sekarang langkah terakhir akan be-- Jadi Langkah terakhir yang perlu kita lakukan sekarang hanya panggilan Mario dengan Tingkat berdasarkan input bahwa kita telah dimasukkan ke dalam pandangan waspada. Jadi kita perlu mengkonversi string ini ke iOS. Meluap statis sangat mengagumkan. Dan kemudian kita sebut diri Nilai marioWithLevels. Mari kita lihat akan itu benar-benar bekerja atau tidak. Kita sudah diberikan piramida. Mari kita mencoba untuk mengubah ketinggian. Itu benar-benar bekerja. Hal ini cukup keren. Sehingga sekarang Anda bisa hanya masukan nilai apapun yang Anda inginkan. Mari kita hanya mengatakan empat. Itu cukup mengagumkan. Jadi ini pada dasarnya adalah contoh yang sangat cepat untuk cara membuat sebuah proyek di s kode dan bagaimana untuk benar-benar cepat kawat sampai beberapa peristiwa yang benar-benar sederhana dan fungsi. Jadi sumber akan untuk diletakkan online nanti. Jadi jika Anda tertarik bagaimana iOS Mario bekerja, Aku akan menempatkan persis sama proyek ke website CS50 nanti. Kami pada dasarnya sudah selesai dengan musim panas, dan sebelum kita selesai Saya hanya ingin menunjukkan kalian untuk beberapa sumber daya yang benar-benar mengagumkan tersedia secara online. Jelas dokumentasi Apel akan menjadi sangat membantu. Tapi selain itu, saya terutama merekomendasikan empat sumber, kode sekolah, rumah pohon, AppCoda dan WWDC video. Sekolah kode dan rumah pohon yang dua website mendidik online, yang secara khusus fokus pada rekayasa perangkat lunak. Khusus untuk kode sekolah, mereka memiliki tutorial yang benar-benar baik pada iOS. Itu adalah contoh yang sangat cepat untuk itu. Mereka benar-benar membuat benar-benar cute-- melihat bahwa iPhone kecil yang lucu Dude di sana, itu cukup mengagumkan. Dan cara mereka menjelaskan Tujuan Sintaks C sangat jelas. Rumah pohon adalah sama. Dan AppCoda adalah forum. Ini sebenarnya sebuah blog yang dijalankan oleh benar-benar berpengalaman Tujuan C programmer. Dan semua tutorial di AppCoda adalah cukup pendek dan mudah diimplementasikan, sangat dianjurkan. Dan jika Anda seorang pengembang, pasti pergi memeriksa bagaimana video WWDC di mana Anda dapat belajar tentang pemrograman iOS terbaru teknik, API dan perpustakaan. Sehingga cukup banyak untuk seminar. Terima kasih banyak. Dan saya berharap Anda bersenang-senang menciptakan aplikasi iOS Anda sendiri.