[Powered by Google Translate] [Seminar] [iOS: Menulis Apps Seperti Boss] [Tommy MacWilliam] [Harvard University] [Ini adalah CS50.] [CS50.TV] Baiklah, setiap orang, selamat datang untuk iOS: Menulis Apps seperti Boss. Seminar ini akan fokus pada menulis aplikasi untuk iPhone dan pada gilirannya menulis aplikasi untuk iPad, dan jadi kita pada dasarnya akan berjalan melalui berbeda beberapa contoh tentang bagaimana membuat sebuah aplikasi, permainan sederhana seperti Toe Tic Tac, atau jika Anda lebih tertarik dalam membuat sebuah aplikasi seperti semacam pembaca berita atau sesuatu yang berinteraksi dengan internet saya akan berbicara tentang itu juga. Berikut agenda singkat kami. Aplikasi IOS ditulis dalam bahasa yang disebut Objective-C, dan jadi ini adalah sedikit mirip dengan C, tetapi tidak benar-benar sama sekali, jadi kita akan berbicara sedikit tentang bahasa itu sendiri dan kemudian bagaimana membangun aplikasi iPhone menggunakan program aplikasi yang disebut Xcode, yang jika Anda belum download belum merasa bebas untuk memulai download sekarang. Ini beberapa gigabyte. Ini harus bebas di App Store, sehingga Anda harus memiliki Mac idealnya menjalankan versi terbaru dari OS X. Jika Anda tidak, tidak ada masalah. Kami memiliki Mac di pusat ilmu pengetahuan yang tersedia untuk Anda gunakan dengan Xcode diinstal, sehingga merasa bebas untuk menggunakan mereka untuk pembangunan. Jika Anda ingin membuat sebuah aplikasi, tetapi tidak memiliki Mac, jangan khawatir. Ada banyak sumber daya kampus untuk itu. Dan demikian maka kita akan menutupi 2 contoh yang lebih besar dari aplikasi yang berbeda Anda dapat membuat. Objective-C secara teknis apa yang disebut set super C. Itu berarti bahwa setiap kode C juga berlaku Objective-C kode. Itu berarti bahwa kita jenis saluran ditempelkan pada beberapa fitur tambahan untuk C. Beberapa fitur termasuk tidak harus pernah menulis malloc lagi, terima kasih Tuhan, tidak harus khawatir tentang mereka pointer bodoh dan membebaskan mereka dan semua hal yang Anda benci tentang C, dan itu agak hilang di Objective-C. Sekarang, Objective-C juga memiliki perpustakaan standar yang jauh lebih besar, sehingga ada lebih banyak fungsionalitas yang Anda peroleh untuk bebas dari dalam Objective-C. Ingat ketika kita sedang menulis PHP kami melihat bahwa kami pergi dari bahasa terkecil ke perpustakaan raksasa dari semua hal-hal gila yang dapat Anda lakukan. Hal yang sama terjadi di IOS. Ada objek untuk hal-hal seperti kalender Buddha, dan benar-benar sesuatu Anda mungkin bisa memikirkan kemungkinan sudah ada dalam pelaksanaan Objective-C. Bagian Tujuan dari Objective-C adalah referensi sesuatu disebut Object-Oriented Programming. Ini adalah jenis konsep baru, tapi kami sudah benar-benar sebagian besar belajar banyak konsep-konsep sudah. Gagasan di balik Object-Oriented Programming adalah bahwa Anda akan menyusun banyak kode Anda di sekitar hal-hal yang disebut kelas, dan kelas-kelas ini benar-benar dimuliakan structs. Di dalam sebuah struct pada dasarnya kita mengatakan di sini adalah suatu hal, dan hal ini dapat memiliki anggota. Sebagai contoh, sebuah node dalam linked list bisa memiliki hal-hal lain seperti nilai, sebuah pointer ke node berikutnya dalam daftar, dan bersama bahwa pointer dan nilai yang terdiri ini contoh salah satu dari struct. Kelas sangat mirip kecuali kelas juga dapat memiliki fungsi dalam diri mereka. Ketika kita menyatakan struct, kita hanya bisa mengatakan n int atau * node berikutnya. Sekarang dengan Objective-C kita benar-benar dapat menempatkan fungsi dalam hal-hal. Hal lain yang dapat dilakukan adalah kelas mereka dapat mewarisi data dari kelas lain. Sebagai contoh, kita akan melihat sekelompok built-in Objective-C kelas. Salah satu dari mereka bisa menjadi kelas yang mewakili pandangan untuk layar, dan sebagainya dengan mengatakan saya ingin menerapkan pandangan saya sendiri pada dasarnya kita mengatakan seseorang selama di Apple, orang mungkin benar-benar baik, menulis kelas ini bagi saya, dan menangani hal-hal seperti menampilkan tombol atau render layar, dan kita akan benar-benar sedih untuk melaksanakan semua yang fungsi diri kita sendiri, dan sebagainya hanya dengan mewarisi data yang kita dapat mengatakan segala sesuatu yang Anda lakukan di kelas Saya juga ingin dalam kelas saya, dan kemudian saya akan melakukan beberapa hal-hal lain, yaitu menerapkan sebuah aplikasi. Itulah apa yang warisan kata berarti. Kita akan melihat contoh yang lebih konkret. Dan akhirnya, kunci dengan Object-Oriented Programming adalah bahwa itu mengarah ke enkapsulasi data. Dalam beberapa masalah kita set kita bisa memiliki ini, variabel global besar dan GLOBALS mana-mana, dan itulah bagaimana kami akan melacak negara. Dengan kelas kita bisa mulai encapsulating informasi dalam suatu objek. Jika kita memiliki satu layar pada aplikasi kami, kami tidak benar-benar perlu untuk memiliki data dari layar lain di dalam aplikasi kita itu, dan sebagainya dengan encapsulating hal dalam kelas ini sebenarnya mengarah untuk desain kode yang jauh lebih baik, dan hal ini mungkin dengan beberapa fitur tambahan dari Objective-C. Peringatan, sintaks untuk Objective-C adalah pisang. Hal ini seperti apa yang telah kita lihat sebelumnya, sehingga sangat sedikit kurva belajar membiasakan diri apa sih artinya ini? Tapi setelah Anda melewati bahwa kurva pembelajaran awal itu benar-benar, benar-benar mulus untuk mulai menulis aplikasi. Untuk mendeklarasikan kelas, untuk mengatakan di sini adalah kelas saya, itu ada, dan mungkin di sini adalah beberapa hal yang aku akan menentukan nanti, Aku akan mengatakan antarmuka @. Aku akan mengatakan antarmuka @. Aku akan memberikan kelas saya nama. Dan kemudian di tempat lain saya akan mengatakan @ end, dan segala sesuatu di antara antarmuka @ dan ujung @ akan menjadi kelas saya. Itu akan menjadi apa di dalam file kami. H. Sama seperti di C kami h. File pada dasarnya mengatakan di sini adalah beberapa hal yang akan ada. Aku tidak perlu memberitahu Anda apa yang mereka lakukan belum, tapi compiler perlu tahu bahwa mereka ada. Kemudian dalam m kami. File-karena m untuk Objective-C adalah di mana kita benar-benar akan menentukan apa yang kelas-kelas lakukan. Sama seperti kami file. C, kami menyediakan sebuah implementasi untuk fungsi. Dalam. M file kita kita akan katakan di sini adalah apa yang semua fungsi dalam kelas saya-apa yang mereka lakukan. Dan akhirnya, dalam sebuah struct kita bisa mengatakan mereka dalam kurung kurawal int n atau node * berikutnya, dan di Objective-C kita akan menggunakan kata kunci properti @, dan ini adalah apa yang akan menentukan sifat, atau non-fungsi yang merupakan bagian dari kelas saya. Memanggil fungsi di Objective-C juga pisang. Ketika kita menyatakan fungsi di C kita mengatakan sesuatu seperti int foo dan terbuka paren dan kemudian memberikannya daftar argumen. Inilah yang menyatakan metode atau fungsi terlihat seperti di Objective-C. Jika saya ingin menyatakan fungsi atau metode mana saya katakan metode benar-benar hanya sebuah fungsi yang merupakan anggota dari sebuah kelas, sehingga jenis dipertukarkan, tetapi tidak benar-benar, sehingga dalam metode saya, saya ingin membuat sebuah metode baru. Ini akan mengembalikan apa-apa, sehingga akan menjadi tipe void. Ini adalah jenis kembalinya fungsi saya. Sekarang kita memiliki parens di sini karena-saya tidak tahu. Selanjutnya akan menjadi nama fungsi saya, dan akhirnya kita memiliki titik koma seperti yang kami miliki di C. Apa yang baru di sini adalah orang ini di sini. Tanda hubung ini sebenarnya diperlukan, dan apa ini, dapat dikatakan bahwa metode ini di sini harus dipanggil pada sebuah instance dari kelas. Setelah kami menyatakan struct kita mungkin mengatakan sesuatu seperti struct n simpul, dan yang benar-benar dibuat atau instantiated salah satu structs sehingga saya benar-benar bisa mulai bekerja dengan apa yang di dalamnya, sehingga dasbor ini berarti bahwa kita harus instantiate kelas hanya seperti kita instantiated bahwa struct sebelum kita dapat memanggil metode ini di atasnya. Jika saya ingin mulai menambahkan argumen untuk metode saya mendapatkan pisang bahkan lebih. Berikut nama metode saya. Lalu aku akan memiliki titik dua, dan setelah usus ini dikatakan di sini datang beberapa argumen. Metode ini memerlukan satu argumen. Jenis argumen adalah int, dan nama argumen bahwa atau variabel yang aku akan mulai menggunakan dalam metode ini disebut i. Sekali lagi, ini adalah metode. Dibutuhkan satu argumen. Jika Anda ingin mulai menambahkan lebih argumen itu mendapat lebih banyak pisang dalam bahwa kita telah usus ini yang mengatakan inilah daftar argumen. Ini argumen pertama adalah bilangan bulat. Sekarang, ini argumen kedua menarik. Variabel yang saya akan menggunakan dalam fungsi saya disebut f, sehingga dalam fungsi saya, saya bisa mengatakan f = 1 + atau sesuatu. Ini hal di sini pada dasarnya adalah sebuah kunci untuk itu argumen atau parameter. Sama seperti kita memiliki pasangan nilai kunci dan sesuatu seperti JSON atau array asosiatif Objective-C membuat keputusan untuk mengatakan, oke, hanya sehingga benar-benar jelas ketika Anda memanggil metode apa semua parameter ini Aku benar-benar akan nama mereka semua. Bila Anda memanggil sebuah metode, Anda benar-benar akan mengatakan andFloat, dan kemudian Anda akan lulus masuk Menariknya, yang satu ini tidak disebutkan, tetapi semua parameter lainnya, jadi jika kita memiliki argumen 3 saya bisa mengatakan andFloat dan lain mengambang dan sebagainya. Ketika saya sebut metode ini adalah pisang saja, jadi jika saya memiliki objek, dan saya mendefinisikan metode yang disebut foo, dan saya ingin menyebutnya, daripada mengatakan foo terbuka / parens dekat Aku akan membuka braket. Berikut nama metode saya. Aku akan menutup braket, dan ini adalah obyek Aku menyebutnya di. Ingat, semua metode yang ada dalam kelas karena kelas dapat memiliki metode yang didefinisikan dalam diri mereka. Di sini saya telah sewenang-wenang menciptakan sebuah objek dari beberapa kelas, dan ini adalah sintaks untuk melakukan itu. Ada 2 langkah untuk menciptakan suatu objek. Langkah pertama adalah untuk mengatakan saya ingin mengalokasikan ruang. Ini adalah setara dengan malloc. Kami tidak harus mengatakan malloc lagi. Kami menjatuhkan m, membuatnya alloc, dan diganti. C dengan. M. Setelah kita sesuatu alloc kita kemudian perlu menginisialisasi itu. Pada dasarnya ketika Anda membuat objek Anda mungkin ingin memiliki beberapa logika yang mengeksekusi ketika mereka diciptakan, sehingga Anda dapat lulus dalam beberapa nilai default atau sesuatu seperti itu, dan jadi ini metode init adalah apa yang benar-benar menciptakan objek. Kami pertama mengalokasikan ruang, seperti yang kami lakukan di C, dan kemudian kita menginisialisasi, yang mungkin atau tidak mungkin melakukan banyak hal. Kemudian kita kembali hal ini menjadi o objek. Ada bintang di sini karena ini secara teknis pointer, tapi jangan khawatir, pointer tidak begitu besar kesepakatan di Objective-C lagi. Sekarang kita sudah instantiated kelas ini disebut NSObject, dan ini hanya kelas acak bahwa Apple memiliki. Kami telah instantiated ini, dan sekarang saya memiliki sebuah instance dari kelas ini dalam o objek, sehingga berarti bahwa jika saya didefinisikan metode ini saya bisa menyebut mereka seperti ini. Demikian pula, jika saya ingin memanggil metode dengan satu argumen, jadi ini adalah metode bar, yang mengambil satu argumen, dan di sini adalah baz: qux metode, jadi ini memakan waktu 2 argumen. Ini memanggil satu fungsi pada o objek. Masuk akal? Sintaks harus masuk akal, tetapi Anda akan terbiasa untuk itu. Oke, mari kita bicara tentang beberapa hal yang dibangun ke Objective-C yang belum tentu dibangun ke C. Dalam C kita semacam harus berurusan dengan string seperti ini array karakter bodoh, dan itu bisa benar-benar menjengkelkan. Objective-C memiliki mereka semua dibangun untuk kita, dan itu dibangun di menggunakan kelas ini disebut NSString. Ketika saya ingin membuat NSString kita memiliki sintaks yang lebih misterius. Daripada mengatakan "cs50" kita katakan @ "cs50" dan ini hanya sintaks untuk menyatakan string di Objective-C. Hal ini sangat mudah lupa, jadi jangan. Sekarang, setelah saya memiliki ini, ini adalah string, namun perhatikan itu benar-benar hanya sebuah objek. Aku berkata NSString, yang berarti saya instantiated kelas disebut NSString, yang orang lain menulis untuk saya, dan mereka sangat bagus tentang hal itu, dan jadi sekarang Saya bisa mulai memanggil metode di atasnya. Jika saya sebut metode panjang pada obyek s itu akan kembali ke saya panjang string. Ini seperti strlen di C. Ini akan kembali 4. Demikian pula, metode lain saya mungkin ingin peduli adalah characterAtIndex ini. Ini adalah metode yang mengatakan pada string s Saya ingin Anda untuk mendapatkan karakter ke nol, dan jadi ini akan kembali ke saya c karakter, dan ada sejumlah lebih dari ini metode yang Anda dapat Google benar-benar mudah. Dokumentasi Apple adalah besar, dan kami akan melihat bahwa dalam sedikit. Mereka adalah string. Kami juga memiliki ukuran variabel array built in Ingat dalam C ketika kita menyatakan array kami harus mengatakan Anda memiliki 5 unsur, akhir cerita. Ketika kami sampai ke JavaScript dan PHP kita bisa mulai melakukan hal-hal seperti menambahkan elemen atau unsur bergerak. Kita bisa melakukan hal yang sama di Objective-C. Daripada membuat sebuah array dengan cara yang normal C kita lagi kelas lain yang disebut NSMutableArray. Ada juga NSArray, dan ini akan dasarnya merangkum berbagai beberapa. Ini mengatakan hal pertama yang ingin saya lakukan adalah saya ingin mengalokasikan ruang untuk sebuah array baru, dan setelah saya mengalokasikannya Saya kemudian perlu menginisialisasi itu. Sekali lagi, hanya memanggil 2 metode. Sekarang ini berarti bahwa dalam objek ini Saya telah array kosong duduk di sana. Jika saya ingin menambahkan sesuatu ke array ini, saya bisa memanggil metode addObject. Saya ingin menambahkan objek ke array, dan saya ingin menambahkan string CS50. Jika saya ingin menghapus sebaliknya bahwa saya bisa mengatakan saya ingin menghapus objek di tempat pertama pada array atau keberatan a. Masuk akal? Oke, Anda jenis bisa digunakan untuk hal braket persegi. By the way, dalam banyak perpustakaan Apple Anda akan melihat NS ini. NS sebenarnya singkatan dari langkah berikutnya, yang merupakan salah satu perusahaan Steve Jobs pertama, dan di sanalah dia benar-benar mulai menulis banyak kode sebagai semacam dasar untuk Mac OS X dan semua hal-hal lain, dan jadi NS ini adalah jenis warisan yang bagus berteriak ke salah satu perusahaan sebelumnya kembali ketika Apple pertama kali memulai. Ini di mana-mana. Mari kita lihat contoh Objective-C yang lebih holistik. Di sini saya dalam Xcode. Untuk sampai ke sini, saya pertama kali download Xcode dari App Store, membukanya, dan kemudian saya pergi di sini untuk file, ke sini untuk proyek baru, dan kemudian. Setelah saya melakukan itu saya memiliki semua pilihan ini dari apa yang saya ingin membuat, dan jadi kita akan melihat opsi ini nanti, tapi hanya untuk contoh ini, karena kita tidak benar-benar akan memiliki sebuah aplikasi belum, Aku datang ke sini, dan aku berkata Command Line Tool, dan ini adalah sebuah aplikasi yang aku bisa dijalankan pada baris perintah seperti kita telah lari dari C. Begitulah cara saya membuat proyek ini, dan jadi sekarang aku di sini, jadi mari kita pertama melihat file ini, dan hal ini akan terlihat cukup akrab. Saya memiliki nama int. Ada teman saya argc, argv teman saya yang lain. Dan jadi kita bisa melihat bahwa ini adalah titik masuk untuk pertama aplikasi saya Objective-C. Di sini kita bisa mengabaikan ini untuk saat ini. Ini pada dasarnya adalah beberapa hal manajemen memori yang Anda tidak akan benar-benar pernah harus khawatir. Mari kita lihat ini blok pertama di sini. Ini baris pertama, jika saya mengatakan Student * alice = [[alloc Mahasiswa] init] apa itu lakukan? Ini mahasiswa pertama di sini, ini mungkin kelas. Ini bukan kelas bahwa Apple menulis, tapi kelas yang saya tulis. Hal pertama yang ingin saya lakukan adalah saya ingin mengalokasikan ruang untuk siswa baru, dan kemudian saya ingin menginisialisasi, jadi ini memberi saya kembali ini objek mahasiswa baru, dan aku menyimpan ini dalam sebuah variabel yang disebut Alice. Mana kelas yang berasal dari? Nah, di sini di sisi kiri ini adalah semua file yang berbeda dalam proyek saya. Kita bisa lihat di sini saya memiliki Student.h dan Student.m a. File. H, ingat, adalah di mana saya menyatakan semua hal yang akan ada di dalam kelas. Mari kita lihat pada saat itu. Baiklah, di sini kita memiliki antarmuka @, dan ini mengatakan bahwa di sini datang deklarasi dari segala sesuatu yang akan ada dalam kelas saya. Lalu aku memiliki titik dua. Lalu aku punya hal NSObject. Usus ini menandakan bahwa bit warisan kami sedang mendiskusikan sedikit lebih awal. Ini mengatakan semuanya NSObject yang bisa dilakukan mana NSObject adalah kelas ini ditulis oleh orang lain, semuanya NSObject ini dapat melakukan Saya ingin bisa melakukan itu. Dengan mengatakan: NSObject yang berarti bahwa saya pada dasarnya mewarisi semua fungsi dari kelas lain. Itu benar-benar memberi saya sejumlah besar metode yang berbeda dan sifat yang dapat saya gunakan. Di sini saya membuat 2 properti. Itu berarti mahasiswa saya, jika ini adalah struct, ini akan menjadi 2 hal dalam struct saya, sehingga setiap siswa memiliki nama yang adalah string, dan mahasiswa juga memiliki nilai, yang int. Akhirnya, di sini aku akan menciptakan sebuah metode untuk mahasiswa saya. Aku menelepon metode saya, initWithName, dan itu membutuhkan waktu satu argumen, dan argumen bahwa adalah string, dan saya menyebutnya nama. Sekarang mari kita lihat bagaimana kita benar-benar diterapkan kelas ini. Di sini, sekarang aku dalam file m. Saya, m untuk implementasi, kurasa. Saya memiliki implementasi saya, akhirnya saya, dan di sini adalah di mana aku benar-benar mendefinisikan apa initWithName tidak. Saya memiliki initWithName, nama parameter saya, dan kemudian ini adalah di mana saya benar-benar menciptakan mahasiswa, dan jadi ini adalah sedikit samar, tapi ini adalah jenis boilerplate yang ingin Anda sertakan dalam konstruktor Anda. Fungsi inisialisasi sini, initWithName, adalah jenis konstruktor. Anda pada dasarnya membangun objek mahasiswa baru dan mungkin mengirimkan beberapa data di dalamnya. Hal pertama yang ingin saya lakukan adalah saya ingin memanggil init pada hal super. Ingat bahwa ketika aku berkata kembali ke sini dalam file h. bahwa segala sesuatu NSObject yang memiliki mahasiswa juga memiliki. Itu berarti ketika saya membuat seorang mahasiswa apa yang saya juga perlu lakukan adalah pastikan bahwa NSObject bahwa aku mewarisi semua itu data dari juga diinisialisasi dengan benar. Apa yang saya harus katakan adalah super ini benar-benar akan mengacu pada kelas induk bahwa aku mewarisi dari, jadi saya ingin memastikan bahwa saya menginisialisasi segala sesuatu yang saya tergantung pada sebelum saya mulai mencoba untuk menggunakannya. Lalu jika itu diinisialisasi dengan benar ini hanya seperti mengatakan jika malloc tidak kembali null maka saya bisa mulai menetapkan beberapa properti. Dalam JavaScript dan PHP kami telah kata kunci ini disebut ini, dan ini disebut contoh saat ini kelas. Di Objective-C kita sebut diri ini. Ketika saya mengatakan self.name, yang berarti bahwa objek Saya baru saja membuat ketika aku berkata alloc init mahasiswa, yang akan memberikan kembali sebuah objek. Itu berarti saya ingin mengatur nama objek yang untuk apa pun saya hanya berlalu masuk Sama seperti di C, kita mengakses anggota dengan dot ini, sehingga self.name mengatakan nama dari objek siswa sekarang akan menjadi apa pun yang Anda hanya berlalu masuk Dan jadi akhirnya, saya bisa kembali jadi saya benar-benar mendapatkan kembali sesuatu. Pertanyaan? Oke, jadi diri ini = Super init, jika Anda tidak benar-benar memahami hal warisan jangan khawatir. Hanya tahu bahwa jika Anda pernah ingin membuat metode sendiri init Anda hanya melakukan itu, dan Anda akan baik untuk pergi. Ya >> [Siswa]. Apa artinya jika diri? Ini berarti ketika kita malloc sesuatu yang kita selalu diperiksa apakah itu sama dengan nol, dan jika itu nol, maka kita keluar. Ini adalah hal yang sama, karena jika ini nol kembali, maka kita mungkin akan kesalahan seg jika kita mulai mencoba untuk memanipulasi itu. Itulah siswa kelas kami. Itu berarti kita bisa menginisialisasi siswa kami dalam salah satu dari dua cara. Jika saya mengatakan alloc mahasiswa init Saya tidak menggunakan metode itu bahwa saya hanya menulis, dan sebagai gantinya saya hanya dapat mengatakan alice.name, dan sekarang aku akan menetapkan bahwa nama properti. Demikian pula, jika saya ingin menggunakan metode initWithName Saya hanya dapat mengatakan alokasi, dan kemudian daripada mengatakan init Aku akan memanggil metode yang saya buat, dan aku akan lulus dalam Bob. Pada titik ini, ini Bob objek memiliki nama sama dengan Bob. Oke, di sini saya menggunakan bahwa NSMutableArray yang kita lihat sebelumnya. Saya mengalokasikan space.Then saya menginisialisasi sebuah array baru. Aku akan menambahkan 2 hal untuk itu. Array ini sekarang memegang benda siswa. Perhatikan bahwa tempat saya harus mengatakan ini adalah array dari siswa. Saya mengatakan itu sebuah array, periode. Lalu aku dapat menempatkan apapun di dalamnya yang saya inginkan. Di sini saya memiliki 2 objek. Akhirnya, saya memiliki objek lain di sini, TF ini. Di sini di TF.h pada dasarnya hal yang sama. Aku mewarisi dari NSObject, dan omong-omong, ketika Anda membuat kelas ini semua dilakukan untuk Anda, semacam ini boilerplate antarmuka. Ini memiliki properti siswa. Saya punya beberapa metode di sini yang tidak benar-benar melakukan banyak, dan sehingga berarti setelah saya membuat objek TF Saya bisa menyebutnya kelas metode di atasnya seperti ini. Setiap pertanyaan tentang Objective-C sintaks sebelum kita mulai bergerak ke lagi menarik apps hal pembangunan? Oke, jadi mari kita benar-benar membuat sebuah aplikasi iPhone. Kelas inti yang Anda akan menggunakan dalam aplikasi iPhone Anda disebut pengendali tampilan, dan pandangan controller pada dasarnya merupakan satu layar dalam aplikasi Anda, jadi jika saya pada aplikasi musik, misalnya, satu controller pandangan bisa mewakili pandangan di mana saya melihat semua lagu di iPhone. Controller lain bisa melihat ketika saya klik lagu dan mulai bermain atau karena saya pengeboran ke dalam seniman. Masing-masing layar yang berbeda dapat direpresentasikan sebagai pengontrol pandangan yang berbeda, dan pandangan controller benar-benar hanya sebuah kelas yang mengatakan bagaimana layar ini bekerja. Hal dalam pandangan controller, kita akan memiliki sifat, sehingga hal-hal seperti tombol akan menjadi milik kontroler pandangan kita. Kami juga akan memiliki metode, dan ini pada dasarnya event handler. Metode ini mengatakan bila Anda menekan tombol ini Saya ingin melakukan sesuatu, dan akhirnya, sekali lagi, kita akan menggunakan kata kunci ini untuk mengakses diri contoh saat. Untuk membangun interface di iOS sebenarnya sangat, sangat mudah. Mereka memiliki hambatan ini bagus dan antarmuka penurunan disebut Interface Builder, dan 2 inti konsep bahwa kawat up Objective C-Anda ke Interface Builder adalah IBOutlet dan IBAction. IBOutlet hanya mengatakan bahwa jika Anda mendeklarasikan sebuah properti yang tombol, dan Anda ingin menghubungkan itu ke sesuatu di UI sebenarnya, Anda akan mengatakan itu sebuah outlet. Demikian pula, jika Anda ingin untuk mewakili event handler maka Anda akan mengatakan itu tindakan. Untuk benar-benar kawat sampai ini representasi grafis dan kode Anda itu benar-benar, benar-benar sederhana. Jika Anda ingin melampirkan IBOutlet, yang harus Anda lakukan adalah Anda mengendalikan klik, dan kita akan melihat contoh ini benar-benar cepat. Anda mengontrol klik tulisan Lihat Controller. Anda akan menyeret ke antarmuka, atau sebaliknya, jika Anda ingin menghubungkan sebuah event handler Anda akan tarik dari antarmuka ke arah lain. Mari kita lihat contoh IOS benar-benar sederhana. Mari kita membuat proyek baru. Aku akan datang ke sini untuk Aplikasi, dan aku akan klik Aplikasi View Single. Aku akan klik next. Aku akan memberikan proyek saya nama. Saya akan menyebutnya Hello. Menariknya, Apple menganggap Anda sedang menciptakan produk sehingga Anda bisa menjualnya dan mereka dapat menghasilkan uang. Di sini aku akan mengatakan bahwa ini adalah sebuah aplikasi iPhone. Anda dapat membuat sebuah aplikasi iPad, atau jika Anda ingin membuat salah satu aplikasi yang mendukung kedua perangkat Anda dapat melakukannya juga. Ini adalah apa yang Anda inginkan checkmarks Anda terlihat seperti. Anda ingin menggunakan storyboard, yang akan kita lihat nanti, dan Anda pasti ingin menggunakan referensi menghitung otomatis, yang merupakan fitur bagus yang mencegah Anda dari keharusan untuk mengatakan malloc dan bebas. Kecuali Anda ingin menelepon malloc dan bebas, saya akan meninggalkan diperiksa ini. Saya akan klik next, dan akhirnya, ini akan bertanya kepada saya di mana saya ingin menyimpannya. Aku akan memukul membuat, dan di sini kita pergi. Saya membuat sebuah proyek baru. Di sini di sebelah kiri adalah semua file yang ada dalam proyek saya, dan perhatikan bahwa saya punya sejumlah, dan aku bahkan tidak melakukan apa-apa. IOS besar. Sebagai contoh, di sini ViewController.h ini, ini akan mewakili controller pandangan pertama saya, sehingga layar pertama dalam aplikasi saya. Sekarang kita tahu apa yang dikatakan. Kita mengatakan bahwa saya menyebut ini ViewController kelas, dan ViewController yang melakukan segala sesuatu yang UIViewController tidak, dan ini, sekali lagi, adalah beberapa kelas menulis bahwa Apple yang melakukan banyak hal berguna bagi kita seperti tampilan layar. Berikut ini adalah di mana saya benar-benar dapat mulai mendefinisikan apa controller pandangan saya tidak, dan ternyata saya benar-benar tidak membutuhkan semua ini. Ini adalah kode boilerplate bahwa Apple memberi saya secara gratis. Aku membutuhkan baris pertama, atau saya tidak punya kelas, sehingga kami bisa menyingkirkan itu dan menyingkirkan ini. Oke, jadi ini adalah layar kosong saya. Sekarang mari kita klik pada MainStoryboard.storyboard ini, dan ini adalah di mana ia mulai mendapatkan menarik. Ini merupakan layar pertama di app saya. Jika saya ingin menambahkan tombol, dalam HTML saya harus membuat tag tombol. Di Android Anda harus membuat tag tombol, tetapi dalam iOS jika saya hanya datang ke sini ke kanan bawah dan jika saya klik pada yang satu ini 3 di sini di mana dikatakan Objects, dan saya dapat menggulir ke bawah, atau saya bisa mulai mencari tombol. Dan lihat, tombol, jadi jika saya benar-benar drag dan drop hak ini ada, Saya baru saja menambahkan tombol untuk layar ini di app saya. Jika saya ingin mengubah teks, saya dapat klik dua kali itu, mengatakan sesuatu menarik seperti "Tekan Me." Oke, sekarang jika saya menjalankan aplikasi ini, jadi kami kompilasi, sehingga untuk menjalankannya saya klik tombol putar di kiri atas, dan ada app saya. Saya tidak melakukan apa-apa, dan aku punya aplikasi iPhone manis mencari. Jika saya ingin menghentikannya, Anda dapat mengklik tombol stop karena itu lebih menyenangkan. Mari kita mengatakan bahwa saya benar-benar ingin sesuatu terjadi ketika saya tekan tombol ini. Untuk melakukan itu apa yang harus saya lakukan adalah saya harus membuat handler baru peristiwa atau tindakan. Itu berarti bahwa saya harus membuat beberapa metode yang saya ingin disebut ketika saya menekan tombol, jadi mari kita membuat metode baru. Saya dalam ViewController.h. Saya harus mengatakan bahwa metode ada. Aku butuh tanda hubung pertama karena saya akan memanggil ini pada controller tampilan. Saya perlu memberikan tipe. Jenis ini akan menjadi hal yang IBAction yang kita lihat sebelumnya. Ini adalah event handler, sehingga akan kembali suatu IBAction, dan ini adalah sebuah petunjuk untuk Xcode untuk mengatakan bahwa ini adalah sesuatu yang saya ingin mentransfer sesuatu untuk. Saya bisa memberikan nama, seperti buttonPressed, titik koma. Sekarang saya sudah dinyatakan sebagai metode baru dalam kelas saya. Saya sudah mengatakan metode ini harus ada. Sekarang mari kita datang ke ViewController.m, dan katakanlah apa metode ini bisa dilakukan. Jika saya mulai mengetik, misalnya, (void) buttonPressed pemberitahuan Xcode benar-benar bagus dan autocompletes bagi saya. Itu benar-benar indah. Perhatikan di sini bahwa dalam file. Saya juga dapat mengatakan batal, dan ini adalah karena IBAction yang sebenarnya bukan tipe. Itu benar-benar hashtag didefinisikan suatu tempat untuk menjadi kehampaan, dan sekali lagi, ini hanyalah sebuah petunjuk untuk Xcode yang mengatakan Saya ingin ini menjadi sebuah event handler, dan kita akan melihat mengapa hanya dalam satu detik. Ketika tombol ini ditekan aku akan melakukan sesuatu yang menjengkelkan seperti menampilkan popup. Untuk melakukan itu saya bisa membuat sebuah instance baru dari kelas ini disebut UIAlertView, dan ini adalah kelas bahwa Apple menulis bahwa akan menampilkan popup menjengkelkan. Kita akan menyebutnya peringatan popup, dan saya memiliki 2 langkah, ingat, untuk menciptakan obyek ini. Hal pertama yang harus saya lakukan adalah mengalokasikan ruang. Saya ingin UIAlertView. Saya ingin mengalokasikan ruang. Itulah metode pertama saya. Metode berikutnya saya adalah saya ingin menginisialisasi, dan jadi saya memiliki metode ini, besar panjang yang disebut initWithTitle. Itu pada dasarnya akan mengontrol apa yang pop ini mengatakan. Judul popup saya bisa halo. Pesan ini dapat popup "Ini adalah iOS." Delegasi hal, saya tidak tahu apa itu. Katakanlah apa-apa. Sekarang tombol yang akan muncul bisa mengatakan sesuatu seperti "Ini pasti adalah," dan aku tidak benar-benar ingin ada tombol lain, jadi mari kita menghapus dan menutup braket. Oke, saya membuat tambahan satu. Di sana kami pergi. Ini adalah bagaimana saya bisa membuat pop-up baru. Jika saya ingin benar-benar menunjukkan popup saya ingin memanggil metode pertunjukan. Untuk melakukan itu saya dapat mengatakan waspada dan pertunjukan, dan lagi, autocomplete adalah super bagus. Jika saya lupa apa itu, jika saya hanya mengetik di s, Aku bisa menelusuri di sini untuk mencari tahu apa itu, dan filter baik. Sekarang ini saya buat popup baru. Kami akan kembali ke apa yang mendelegasikan berarti kemudian, dan sekarang saya ingin mengatakan saya ingin metode ini untuk ditembakkan ketika saya menekan tombol, jadi aku akan kembali ke storyboard saya, dan saya ingin sekarang melampirkan IBAction ini. Hal pertama yang Anda ingin lakukan adalah mengklik tombol. Ketika saya menekan tombol ini saya ingin sesuatu terjadi. Aku tidak akan tahan kendali. Aku akan klik dan tarik dari tombol untuk di sini di mana dikatakan Lihat Controller. Kita bisa melihat bahwa itu baik menyala. Jika aku membiarkan pergi dengan mouse saya, saya sekarang memiliki ini popup di sini di mana saya memiliki beberapa pilihan. Salah satunya adalah peristiwa yang saya dapat mendaftar. Ini semua metode tersebut saya dideklarasikan pada file h saya sebagai IBActions. Ini adalah bagaimana Xcode tahu apa yang harus muncul dalam daftar ini kecil, jadi itu hanya sebuah petunjuk. Jika saya klik pada tombol ditekan, saya sekarang terdaftar event handler. Dalam JavaScript kita harus mengatakan bahwa saya memiliki beberapa kode yang mendaftarkan event handler. Di Objective-C itu benar-benar mudah. Jika saya menjalankan ini lagi sekarang ketika saya menekan tombol pengendali event saya akan memecat, dan aku akan mendapatkan ini popup. Super, super sederhana di sana. Jika Anda pernah ingin melihat semua peristiwa yang terjadi harus didaftarkan pada komponen jika saya klik pada tombol ini dan saya datang ke sini ke sisi kanan pertama Anda dapat melihat di sini saya bisa melakukan hal-hal seperti jenis tombol, jadi jika Anda ingin salah satu dari mereka saya atau tombol kontak add atau apa pun. Jika saya ingin melihat semua peristiwa yang ada di tombol ini jika saya datang jauh-jauh ke sini ke sisi kanan kita bisa lihat di sini pada acara saya memiliki semua peristiwa yang berbeda. Saya dapat menekan tombol, ketika saya melepaskan tombol, ketika saya dua kali lipat keran atau apa pun, dan yang saya hanya terdaftar adalah peristiwa ini disebut Sentuh Up Inside, dan ini mengatakan bahwa segera setelah jari saya datang dari tombol bahwa acara akan api, dan itulah apa yang baru saja terjadi. Ini adalah jenis acara tombol ditekan standar. Ada pertanyaan sejauh ini? Oke, itu bagaimana kita dapat mulai untuk kawat hal-hal dalam kode kita ke hal-hal dalam antarmuka kami. Ingat hal pertama yang kita harus lakukan adalah untuk menemukan kode, dan kemudian kita kabel sampai antarmuka untuk kode, dan ada app pertama kami. Oke, itu benar-benar keren, dan kami menciptakan tombol ini. Bagaimana jika kita tidak mau harus menciptakan sekelompok properti mewakili tombol ini? Misalnya, di Tac Toe Tic Saya memiliki 9 tombol, dan itu akan menjadi super, super menjengkelkan harus drag and drop 9 kali atau jika saya harus membuat Tic Tac Toe dengan 81 bukannya 9 dan aku harus drag dan drop 81 kali, dan itu lumpuh. Apa yang dapat kita lakukan sebagai gantinya adalah banyak seperti HTML ketika kita memiliki hal-hal seperti ID dan nama dan kita dapat mencari hal-hal oleh ID mereka, ada gagasan serupa di IOS disebut tag. Tag hanyalah sebuah identifier numerik unik untuk komponen. Jika saya mengatakan ini memiliki tag dari 0, misalnya, jika saya membuat tombol dan memberikan tag dari 0, dan kita akan melihat bagaimana untuk melakukan itu hanya dalam satu detik, jika saya ingin mendapatkan tombol yang saya hanya bisa mengatakan saya ingin menelepon yang viewWithTag metode pada objek di sini, yang self.view, yang mewakili layar saat ini, misalnya. Jika saya sebut bahwa metode viewWithTag, aku akan menarik kembali tombol dengan tag 0. Mari kita lihat ini dengan bangunan Tac Toe Tic. Pertama, ini adalah storyboard saya. Saya telah membuat ini 10 tombol UI. Perhatikan mereka semua ukuran yang sama. Jika saya klik salah satu dari ini dan saya datang kembali ke sini pada sisi kanan Anda akan melihat saya disesuaikan font di sini, jadi saya membuat font sedikit lebih besar, tapi apa yang saya juga lakukan adalah saya set tag ini. Saya mengatakan bahwa ini memiliki tag dari 1, dan itulah kiri atas. Sekarang, jika saya klik tombol lain, seperti yang satu ini kedua di sini, sekarang Anda akan melihat bahwa tag saya adalah 2. Masing-masing tombol hanya memiliki tag yang unik, dan jadi ini nanti bagaimana aku akan mulai berinteraksi dengan aplikasi saya. Ini semua dalam satu controller tampilan, tapi di sini adalah apa yang kita miliki. Kami memiliki 3 properti di sini. Yang pertama dan yang terakhir akan mewakili keadaan papan saya. Pada dasarnya ini pertama adalah sebuah array yang mewakili mana Xs dan Os. Ini satu di sini memberitahu kita yang mendapat giliran. Anda akan melihat bahwa saya juga memiliki hal-hal di sini. Sebelum ketika kita menyatakan sifat kami memberi mereka nama dan tipe. Kami juga bisa memberikan beberapa informasi tambahan di sini. Ini pertama mengatakan nonatomic, dan apa ini mengatakan pada dasarnya hanya satu hal akan pernah mencoba untuk mengakses variabel ini pada suatu waktu. Anda bisa melakukan aplikasi yang lebih kompleks yang multi-threaded, dan begitu kembali Scratch kami memiliki benang yang berbeda, dan sprite yang berbeda bisa melakukan hal yang berbeda pada waktu yang sama. Jika itu tidak terjadi, yang tidak dalam apa pun yang kita akan melihat, jika kita mengatakan nonatomic itu benar-benar akan membuat hal-hal sedikit lebih cepat. Kami juga memiliki hal ini disebut assign, kuat, atau lemah. Ini menetapkan hanya mengatakan bahwa ini adalah tipe standar. Ini bukan suatu obyek atau pointer karena ini hanya bool, sehingga bool dibangun ke Objective-C. Ini mengatakan jangan mencoba untuk melakukan sesuatu yang mewah dengan pointer di sini. Ini adalah scaler tua biasa. Kuat dan lemah, ini yang lemah mengatakan bahwa sebenarnya Saya ingin ini akan menunjuk ke sesuatu di controller tampilan. Aku tidak akan benar-benar mengalokasikan atau init ini sendiri. Pembangun antarmuka, ketika saya menjalankan aplikasi, akan menangani semua inisialisasi itu. Jika saya katakan lemah, yang mengatakan orang lain yang akan menciptakan ini. Jika saya mengatakan kuat, ini mengatakan bahwa aku akan menjadi orang yang menciptakan obyek papan, dan jadi di sini saya memiliki metode yang lebih banyak di sini, Misalnya, tindakan ketika tombol ditekan permainan baru, tindakan ketika salah satu tombol lain ditekan, dan sebagainya. Kami tidak akan masuk ke terlalu banyak logika Toe Tic Tac, meskipun itu sangat menarik, tapi mari kita lihat beberapa hal yang dapat kita lakukan dalam IOS. Metode permainan baru akan dipecat setiap kali saya tekan tombol permainan baru. Untuk menghubungkan bahwa sampai saya hanya datang ke storyboard saya. Saya mengklik permainan baru. Jika saya datang ke sini ke kanan aku dapat melihat bahwa Sentuh Up dalam ditransfer ke metode newGame. Itulah mengapa hal ini akan dipecat. Metode newGame akan melakukan set up beberapa. Ini akan mengatakan saya ingin Anda untuk membersihkan negara dari papan. Ini adalah metode yang bagus di array bisa berubah. Ini akan mengatakan itu sekarang giliran X, dan sekarang aku akan mengambil keuntungan dari hal ini viewWithTag. Saya tahu bahwa saya memiliki tombol tag 1-9, dan itu sesuatu yang saya sewenang-wenang memilih. Jika saya ingin mengatur teks dari setiap tombol menjadi kosong karena saya hanya memulai permainan baru dan saya tidak ingin ada Xs atau Os yang akan tersisa saya bisa melakukan ini. Saya dapat mengatakan saya ingin tampilan dengan tag, 1, 2, 3, 4 dan sebagainya. Ini akan menarik sebuah tombol yang berbeda setiap kali. Di sini aku akan dilemparkan ke UIButton. Sama seperti kita bisa dilemparkan ints untuk mengapung dan sebaliknya ini mengatakan bahwa saya ingin melemparkan ini UIButton. Itu berarti jenis ini akan menjadi * UIButton karena pointer, tapi jangan khawatir, mereka tidak menakutkan lagi. Setelah saya memiliki tombol ini aku akan memanggil metode di atasnya. Metode ini disebut setTitle forState, dan jadi ini mengatakan Saya ingin mengatur teks tombol untuk menjadi string kosong, dan saya ingin menjadi string kosong ketika itu tidak ditekan. Jika saya menggunakan metode ini, saya dapat mengubah teks tombol segera setelah seseorang hits itu, tapi kami ingin mengatakan ketika tombol hanya duduk di sana Saya ingin teks yang akan kosong. Akhirnya, kita akan menginisialisasi papan saya, dan aku akan mengatakan bahwa segala sesuatu saat ini di 0, sehingga forum ini anggota berubah adalah array bisa berubah, yang berarti saya dapat memanggil metode addObject dan hanya di dalam 0 dari itu. Itulah yang terjadi ketika saya membuat sebuah permainan baru. Mari kita lihat satu lagi. Metode ini di sini adalah IBAction yang akan ditekan setiap kali salah satu kotak ditekan. Sekarang kita memiliki beberapa Tic Tac Toe logika di sini. Kami mencari tahu giliran adalah, dan berdasarkan bahwa kami baik menetapkan X atau O, tapi kami melihat bahwa kita menggunakan kembali ini event handler yang sama untuk setiap satu dari tombol-tombol. Itu berarti bahwa saya tidak memiliki metode untuk tombol kiri atas, metode yang berbeda untuk tombol kanan bawah, meskipun saya bisa melakukan itu. Itu tidak akan benar-benar menjadi desain yang baik. Apa yang saya lakukan di sini adalah aku benar-benar akan menentukan apa tag dari tombol yang ditekan adalah. Anda melihat bahwa metode bermain mengambil satu argumen. Ini disebut pengirim, dan apa pengirim adalah pengirim akan mewakili apa yang diambil tindakan atas. Jika saya menekan tombol, pengirim ini akan menjadi yang UIButton bahwa aku benar-benar ditekan, sehingga berarti bahwa UIButton memiliki tag karena saya membuat tag. Jika saya ingin mendapatkan tag saya hanya bisa mengatakan Saya ingin tag dari pengirim, dan sekali lagi, saya baru saja dicor ke UIButton. Saya kebetulan tahu bahwa pengirim akan UIButton. Itu tidak selalu harus UIButton. Aku bisa, misalnya, mendaftarkan event handler yang sama  satu untuk tombol, satu untuk slider. Dalam kasus ini, saya tahu mereka semua tombol, jadi aku akan mengatakan Saya ingin ini menjadi sebuah tombol, dan kemudian saya bisa mendapatkan tag, dan dari tag sekarang saya tahu keberadaan saya di dalam dewan. Lalu aku hanya dapat mengatur baik X atau O, dapat flip gilirannya, cek yang telah memenangkan, dan sebagainya. Setiap pertanyaan ini sejauh ini? Oke, semua kode yang kami diposting online-kita tidak ingin masuk ke terlalu banyak dari logika Toe Tic Tac, tapi sekarang Anda dapat melihat yang benar-benar semua yang kita lakukan adalah kita perulangan atas array ini, jadi kami memiliki beberapa untuk loop di sini, dan kami hanya membandingkan untuk melihat kita memiliki pertandingan di semua baris, pertandingan dalam kolom atau sesuatu seperti itu. Untuk benar-benar menjalankan aplikasi ini, jika saya tekan salah satu tombol bahwa metode bermain dipecat, sehingga berarti saya hanya menetapkan tombol untuk menjadi X, jadi sekarang tombol ini akan menjadi O, dan seterusnya, dan jadi itulah bagaimana kita mulai berinteraksi dengan aplikasi satu halaman. Kami akan mengirimkan kode, sehingga merasa bebas untuk membaca dengan teliti bahwa, tetapi mari kita sekarang berbicara tentang beberapa aplikasi yang lebih dari satu halaman. Menyenangkan seperti Tac Toe Tic adalah, banyak aplikasi dalam IOS adalah jenis bor ini ke hal-hal dengan beberapa layar. Konsep pertama yang kita harus bicara tentang adalah protokol, dan protokol hanyalah seperangkat metode bahwa Anda bisa berjanji untuk mendefinisikan. Jika saya membuat ini protokol baru dengan 2 metode, ini yang pertama, jika jenis kembali batal, saya menyebutnya foo. Dibutuhkan tanpa argumen. Saya memiliki metode lain. Ini mengembalikan sebuah int. Saya menyebutnya bar, dan dibutuhkan satu argumen. Semua protokol ini adalah yang disebut SomeProtocol di sini, ini adalah satu set hal bahwa seseorang dapat menerapkan. Saya belum dalam protokol ini mengatakan apa foo tidak. Sebaliknya, Aku hanya mengatakan Anda bisa mendefinisikan foo jika Anda ingin. Jika saya membuat pandangan controller atau menciptakan kelas Saya bisa masuk dari janji kelas untuk mengimplementasikan beberapa metode, jadi misalnya, jika mengatakan ini sekarang bilang aku membuat janji kepada Anda bahwa di dalam kelas ini kontroler pandangan saya akan memiliki definisi untuk kedua foo dan bar. Mengapa itu berguna? Banyak komponen dalam IOS mengambil keuntungan dari ini pola desain disebut delegasi, dan apa delegasi mengatakan adalah bahwa, misalnya, jika saya memiliki kotak teks dan ada beberapa peristiwa yang dapat didaftarkan dalam kotak teks saya, daripada menciptakan peristiwa terpisah apa yang bisa saya lakukan adalah saya dapat mengatakan delegasi dari kotak teks ini akan beberapa objek. Ketika saya mengatakan bahwa ini adalah delegasi sekarang yang berarti bahwa setiap kali beberapa peristiwa akan dipecat dalam kotak teks daripada harus mendaftar atau sesuatu seperti itu itu hanya akan memanggil metode pada delegasi. Sebagai contoh, dalam kotak teks saya, saya memiliki sebuah metode untuk ketika saya menekan yang dilakukan tombol di kanan bawah, dan jadi daripada mendaftarkan event handler apa yang bisa saya katakan adalah kotak teks, di sini adalah obyek yang saya ingin Anda memanggil metode pada setiap kali seseorang menekan tombol dilakukan, dan itu berarti bahwa objek yang memiliki menerapkan beberapa protokol yang mengatakan saya berjanji untuk mendefinisikan bahwa tindakan tombol dilakukan, karena jika itu tidak menunjukkan metode yang Anda dan tekan selesai, maka itu akan menjadi membingungkan. Mari kita lihat sebuah contoh. Di sini saya hanya memiliki satu kotak teks, dan salah satu properti dari kotak teks di sini di sisi kanan adalah delegasi. Ini adalah properti kelas. Apa yang saya lakukan di sini adalah cara mengontrol diklik, dan aku diseret dari tempat ini di sini ke controller tampilan, dan mengatakan sekarang delegasi dari kotak teks ini akan menjadi controller tampilan. Itu berarti bahwa ketika beberapa tindakan terjadi, daripada mendaftar terpisah event handler saya ingin Anda untuk mengirim mereka ke delegasi. Sekarang mari kita lihat kontroler pandangan saya. Di dalam file h. Aku sudah membuat janji. Aku sudah berjanji untuk menerapkan beberapa metode dalam protokol ini disebut UITextFieldDelegate, dan sekali lagi, ini hanya beberapa daftar dari beberapa hal yang saya dapat memilih untuk menerapkan. Jika saya datang ke sini dalam. M file saya, saya telah menerapkan salah satu metode tersebut. Saya sudah menyebutnya textFieldShouldReturn karena itulah apa itu disebut dalam protokol. Dan sekarang setiap kali saya menekan tombol dalam melakukan itu text field ini adalah apa yang akan dipanggil, jadi saya tidak mendaftarkan event handler. Saya terhubung delegasi, dan setiap kali acara ini dipecat ini adalah metode yang akan dipanggil, jadi jika aku datang ke sini untuk storyboard saya dan menjalankannya- sementara itu memuat kita dapat melihat apa hal ini. Pada layar saya, saya memiliki 2 hal. Aku punya kolom teks, dan saya memiliki label ini. Saya hanya mengatakan saya ingin teks label ini untuk menjadi sama dengan apa pun pengguna mengetik dalam kolom teks. Ini baris berikutnya di sini hanyalah sebuah metode yang saya akan menelepon pada kolom teks yang mengatakan saya ingin Anda untuk menyembunyikan keyboard. Ini hanya metode sewenang-wenang bahwa Apple memilih. Sekali lagi, sebelum saya melakukan apapun yang saya harus kawat semuanya, jadi saya pertama kali datang ke sini. Dari controller pandangan saya tarik ke kotak teks. Aku membiarkan pergi, dan aku bisa melihat di sini bahwa saya dapat membuat properti bidang teks karena di sini di controller pandangan saya telah didefinisikan properti yang merupakan IBOutlet dari kolom teks. Ini mengatakan bahwa saya bisa mentransfer properti ini sampai ke bidang teks di UI saya. Sekarang ketika saya klik ini saya bisa mulai mengetik. Sekarang jika saya mengklik tombol dilakukan ini akan api suatu peristiwa yang sekarang saya bisa menanggapi. Tidak ada event handler. Begitulah cara saya hanya menanggapi bahwa tombol dilakukan. Masuk akal? Ini bukanlah pola desain yang-Anda mungkin tidak pernah menemukan diri menciptakan protokol sendiri, tapi hanya tahu bahwa beberapa berbeda iOS komponen mendaftar peristiwa dalam cara yang berbeda. Tombol, misalnya, menggunakan mereka IBActions. Bidang teks, di sisi lain, akan menggunakan delegasi. Kita bisa melihat dan Anda dapat melihat semua itu dalam up dokumentasi. By the way, sebenarnya ada satu ton barang UI dibangun ke iOS untuk Anda, jadi misalnya, cara saya membuat yang mengatakan dilakukan di bagian kanan bawah adalah Aku memilih bidang teks. Saya datang ke sini. Saya menggulir ke bawah sedikit untuk mengembalikan kunci, dan saya benar-benar dapat membuat ini sejumlah hal, seperti jika saya ingin mengatakan bahwa panggilan darurat bukannya aku bisa melakukan itu, yang benar-benar acak, dan saya tidak tahu mengapa ada built-in darurat tombol panggilan, tapi ada, ia mengatakan panggilan darurat dalam huruf sangat kecil. Di sana Anda pergi. Pasti mengeksplorasi semua opsi yang berbeda di iOS. Setiap pertanyaan tentang delegasi? Sekali lagi, hanya pola desain yang menarik yang Anda harus sadar. Oke, mari selanjutnya kita lihat tampilan tabel. Sebuah tampilan tabel pada dasarnya adalah bahwa daftar item yang seluruh tempat di iOS. Ketika Anda membalik-balik semua kontak Anda, Anda sedang melihat halaman pengaturan, dan hal semacam daftar hal-hal yang disebut tampilan tabel. Menerapkan tampilan tabel di iOS cukup sederhana. Alih-alih membuat sebuah kelas yang turun dari yang UIViewController seperti kita lakukan sebelum kita hanya perlu untuk mengatakan daripada semuanya UIViewController tidak ingin saya lakukan, Saya mengatakan semuanya UITableViewController yang tidak ingin saya lakukan, sehingga hanya menambahkan beberapa hal tambahan yang benar-benar dilakukan untuk kita. Kita perlu melakukan sangat sedikit untuk pada dasarnya mengisi kekosongan dalam tabel. Dalam rangka untuk menampilkan tabel saya harus menjawab beberapa pertanyaan. Pertanyaan pertama yang saya butuhkan untuk menjawab adalah berapa banyak bagian dalam tabel? Ketika Anda membalik-balik aplikasi kontak Anda, Anda akan melihat bahwa itu semacam diselenggarakan oleh As, maka Anda memiliki B, dan Anda memiliki judul sub kecil. Masing-masing disebut bagian. Anda mungkin atau mungkin tidak perlu ini. Hal pertama yang perlu Anda lakukan adalah menerapkan metode disebut tableView: numberOfSectionsInTableView. Itu hanya mengembalikan berapa banyak bagian yang Anda miliki, jadi ini bisa dikatakan kembali satu jika Anda memiliki satu tampilan meja besar. Pertanyaan berikutnya yang IOS perlu tahu adalah berapa banyak baris yang Anda miliki? Misalnya, Anda sedang membalik-balik tampilan tabel. Anda tetap memiliki jumlah lagu yang Anda cari di atau sejumlah tetap kontak. Jika Anda saya, tentu saja, tidak banyak, dan sehingga cara iOS tahu berapa banyak sel untuk ditampilkan. Sekali lagi, ini bisa mengatakan sesuatu seperti kembali 3. Tampilan tabel saya memiliki 3 baris. Akhirnya, iOS perlu tahu apa yang tampak seperti setiap sel, jadi apa itu benar-benar akan lakukan adalah memanggil metode ini di sini, ini tableView: cellForRowAtIndexPath. Ini akan memanggil metode ini pada setiap sel dalam tabel Anda. Bagaimana mereka bisa mengetahui berapa kali menyebutnya? Nah, Anda mengatakan itu dalam jumlah baris dalam bagian. Kita akan menyebutnya pada masing-masing sel-sel kita, dan dalam hal ini adalah di mana Anda benar-benar dapat melakukan hal-hal seperti mengatur teks atau memberitahu Anda apa yang tombol biru kecil di sisi kanan. Pola untuk mendapatkan sel-sel ini, kita akan menggunakan metode ini disebut dequeueReusableCellWithIdentifier. Objective-C sebenarnya sangat terkenal untuk panjang konyol nama metode mereka, dan ini benar-benar kasus yang bagus dalam contoh titik. Apa metode yang dilakukan adalah ini hanya bilang aku ingin kau memberiku sel. Hanya iOS hal. Jika Anda memiliki sesuatu seperti 100.000 lagu di iPod Anda apa iOS tidak ingin lakukan adalah mengalokasikan 100.000 sel, karena jika Anda berada di bagian atas daftar Anda, apakah Anda benar-benar perlu untuk mengalokasikan memori untuk sel yang 99.000 baris ke bawah? Tidak, karena ketika Anda sedang menggulir Anda dapat jenis mengalokasikan saat Anda pergi bersama. Hal ini dilakukan untuk Anda. Anda tidak perlu khawatir tentang semua hal kinerja bodoh. Yang Anda katakan adalah Anda menyebutnya dequeueReusableCellWithIdentifier metode, dan ini mengatakan, oke, jika Anda perlu untuk Aku akan membuat sel baru untuk Anda. Tapi jika Anda di bawah meja dan Anda sudah dialokasikan beberapa sel di bagian atas tabel bahwa Anda benar-benar tidak akan membutuhkan waktu dekat Saya akan memberi Anda salah satu dari mereka kembali daripada mengalokasikan yang baru, dan jadi ini adalah kekhawatiran kinerja yang bagus. Anda tidak perlu mengalokasikan sel sendiri. Itu akan memberi Anda kembali sel. Ini akan mengembalikan kepada Anda sebuah objek sel. Setelah Anda memiliki objek sel Anda dapat melakukan hal-hal untuk itu. Anda dapat mengatur teks dari sel dengan properti ini disebut label teks. Anda dapat menambahkan panah yang di sebelah kanan atau beberapa hal acak lainnya dengan properti lain yang disebut accessoryType, dan seterusnya dan seterusnya. Mari kita lihat benar-benar menerapkan tampilan tabel sekarang. Ketika saya membuat proyek ini daripada mengatakan aplikasi tampilan tunggal saya benar-benar datang ke sini untuk master-detail aplikasi, dan jadi pada dasarnya ini sesuai dengan aplikasi mail pada iPad dengan tampilan tabel di sebelah kiri dan kemudian isi di sebelah kanan. Pada iPod atau iPhone ini akan sesuai dengan tampilan tabel tunggal. Di situlah saya mendapat kode saya pemula. Mari kita pertama kita lihat storyboard. Semua ini dilakukan untuk saya, pada dasarnya diciptakan. Ini bar navigasi menunjukkan apa sel contoh bisa terlihat seperti, dan saya dapat klik dua kali ini, mengubah judul. Setiap kekhawatiran UI lain saya bisa menangani di sana. File header terlihat sangat sederhana. Daripada mengatakan ini adalah UIViewController kita sekarang mengatakan ini adalah TableViewController, jadi kita tahu bahwa kita ingin memanggil semua metode tabel. Selanjutnya saya ingin membuat sebuah properti yang akan mewakili hal-hal dalam meja saya. Tabel ini akan menampilkan sewenang-wenang daftar buah, dan jadi saya perlu untuk membuat array beberapa di mana saya bisa memasukkan buah. Di dalam file implementasi saya hal pertama yang saya ingin lakukan adalah saya ingin memastikan bahwa saya menginisialisasi array ini. Aku berkata alloc init, menciptakan berbagai buah saya, dan aku menambahkan 4 hal untuk itu, salah satunya adalah jauh lebih kontroversial daripada 3 lainnya. Dan sekarang saya memiliki sebuah array ukuran 4. Kami gemetar itu dalam CS50. Saya sekarang memiliki sebuah array ukuran 4. Sekarang aku akan mulai menjawab pertanyaan-pertanyaan, dan benar-benar, ketika saya membuat aplikasi ini semua ini sudah dilakukan untuk saya. Saya tidak perlu mengetikkan jumlah seksi pada tampilan tabel. Itu sudah ada di sana, dan aku mengisi kekosongan. Berapa banyak bagian yang saya miliki? Satu. Semua dilakukan. Berapa banyak baris yang saya miliki? Yah, aku punya satu baris untuk setiap buah, sehingga jumlah ini adalah properti dari setiap array yang mengatakan seberapa besar itu? Itulah berapa banyak baris yang saya miliki. Akhirnya, saya perlu mengatakan apa setiap sel terlihat seperti? Aku akan mengatakan dequeueReusableCellWithIdentifier. Sekali lagi, ini sudah ditulis untuk saya. Saya tidak perlu melakukannya sendiri, dan saya ingin kembali sel ini di lokasi ini. Ingatlah bahwa kita memanggil metode yang sama pada setiap sel, dan argumen ini di sini, ini argumen indexPath, mengatakan apa yang berturut-turut aku masuk Jika saya mengatakan indexPath.row di sini ini akan menjadi 0, maka akan menjadi 1, maka akan menjadi 2, dan ini adalah jadi saya tahu apa sel Saat ini saya menampilkan. Saya ingin mengatur teks dari sel menggunakan properti textLabel untuk masuk ke dalam berbagai buah saya dan mendapatkan obyek yang sesuai untuk setiap baris. Jika ini adalah string, saya sekarang pengaturan properti teks ke string. Aku bisa melakukan satu hal lainnya. Saya juga bisa mendaftarkan event handler pada masing-masing sel, jadi ketika saya tekan masing-masing sel didSelectRowAtIndexPath ini, ini akan dipanggil untuk saya, sehingga hanya dengan mendefinisikan ini saya sekarang dapat menangani apa yang terjadi ketika Anda menekan sel, dan sekali lagi, kami lewat di mana sel disadap sehingga kita dapat menggunakan kembali ini event handler sama untuk semua sel-sel kita. Sekali lagi, ini adalah sesuatu iOS lakukan untuk saya. Mari kita menampilkan popup lain mengganggu yang hanya mengatakan bahwa Anda memilih sesuatu di mana sesuatu yang akan menjadi obyek baris. Ketika saya menjalankan ini, aku akan memiliki tampilan tabel yang bagus dengan satu baris untuk setiap buah tersebut, dan jika saya tekan satu ia memberitahu saya apa yang terjadi. Masuk akal? Mari kita membangun sedikit lebih kompleks dari sebuah aplikasi, sebanyak mengklik Anda memilih tomat. Bagian yang baik tentang storyboard tersebut yang itu tidak hanya akan membantu kita layar desain individual, itu juga akan membantu kita menyatukan seluruh aplikasi kami, sehingga aplikasi akhir kita akan bangunan ini olahraga baik pembaca berita, dan sehingga akan memiliki beberapa layar, sehingga saya benar-benar dapat mewakili masing-masing beberapa layar pada storyboard, dan aku bisa zoom out dan melihat aplikasi saya dari tingkat tinggi. Dalam rangka untuk menciptakan elemen baru dalam storyboard saya itu benar-benar sederhana dalam Interface Builder. Jika saya ingin menambahkan layar lain ini, misalnya, Saya pertama dapat memperkecil dengan pinch zoom bahwa Apple mencintai begitu banyak, dan di sini sebelum saya mencari tombol dan saya drag dan drop tombol jika saya ingin membuat layar baru saya benar-benar bisa hanya drag dan drop controller pandangan keseluruhan, jadi jika saya ambil ini, menariknya di sini, hey, ada layar lain, dan jadi sekarang menggunakan file ini storyboard yang sama Aku bisa memiliki semua layar dalam aplikasi saya, dan saya bisa memperkecil dan melihat bagaimana mereka berinteraksi. Ini tidak akan berinteraksi belum. Cara yang ini 2 layar berinteraksi adalah Anda mendefinisikan hubungan. Pada dasarnya anda dapat mengatakan layar ini, ketika Anda menekan tombol ini, Saya ingin Anda geser ke layar baru ini. Itu berarti ada hubungan semacam ini antara  layar pertama dan layar kedua. Anda akan memiliki dasarnya panah dari tombol yang ke layar kedua mengatakan bahwa ketika Anda menekan tombol ini yang mana saya ingin pergi. Sama seperti kita mengawasi diklik dan diseret untuk menentukan orang-outlet kita akan melakukan hal yang sama untuk mendefinisikan segues. Kita akan melihat contoh untuk itu, dan sebelum kita benar-benar transisi dari satu layar ke yang lain iOS cukup baik untuk memanggil metode ini disebut prepareForSegue, dan ini adalah di mana kita dapat mulai mengirimkan data dari satu aplikasi ke yang lain. Dalam contoh kita akan melihatnya pada dasarnya akan memungkinkan kita untuk menyaring tim bisbol oleh liga dan divisi. Ketika saya memilih liga, misalnya, saya ingin transisi ke layar berikutnya di mana saya bisa menampilkan semua divisi dalam liga atau semua tim yang berbeda. Saya perlu mengirim dengan layar apa yang tim Anda harus menampilkan. Untuk melakukan itu aku akan mengambil keuntungan dari metode ini di sini. Akhirnya, hanya titik acak pada iOS. Jika Anda ingin menyimpan data ini ada hal yang disebut data inti, yang sebenarnya semacam rumit untuk bekerja dengan. Anda juga dapat menggunakan SQL untuk menyimpan data, yang, sekali lagi, bagus tapi agak di sisi lebih rumit untuk bekerja dengan, namun iOS juga mendukung hal-hal yang benar-benar keren disebut daftar properti, dan daftar properti hanyalah sebuah file yang mewakili pasangan nilai kunci. Anda mendefinisikan daftar kunci, dan Anda mengatakan kunci ini akan menjadi array. Kunci ini akan menjadi string, dan pada dasarnya apa pun yang dapat Anda lakukan di JSON yang dapat Anda lakukan dalam daftar properti, dan jadi ini benar-benar baik memungkinkan kita untuk bekerja dengan beberapa data. Sebagai contoh, saya punya ini Teams.plist yang saya buat. Saya membuat sebuah file plist baru, dan saya bisa menelusuri. Ini adalah kamus, ini adalah kamus, ini adalah string, dan jadi ini adalah representasi grafis yang bagus dari dokumen JSON atau hanya satu set pasangan nilai kunci, dan jadi ini adalah data yang saya akan bekerja dengan dalam aplikasi saya. Mari kita pertama datang ke sini. Kami memiliki file lebih banyak sekarang. Tapi mari kita pertama kali datang ke sini untuk storyboard. Storyboard sini-jika saya bisa keluar tampilannya- kita sekarang dapat melihat bahwa ini adalah aliran app saya. Saya pertama kali akan mulai di layar ini. Aku akan menelusuri ke layar ini, dan aku akan menelusuri ke layar ini, dan kita dapat melihat di sini bahwa jika saya jenis memindahkan salah satu dari ini sekitar kita ini anak panah pergi dari sini ke sini, dan cara saya mendefinisikan panah itu jika saya memperbesar sedikit, dan jika saya datang ke controller tampilan ini, dan inilah sel, dan saya ingin mengatakan bahwa ketika Anda menekan sel Saya ingin Anda geser ke layar lain. Aku hanya bisa tahan kontrol, gulir atas sedikit, tahan kontrol, tarik sel ini atas dan biarkan pergi. Dan di sini kita katakan apa transisi yang ingin Anda gunakan? Apakah Anda ingin menggunakan hal itu geser yang disebut push? Apakah Anda ingin geser dari bawah? Itu disebut modal. Dan setelah saya klik salah satu, itu akan menarik panah ini untuk saya, dan itu berarti bahwa saya telah benar-benar ditangani apa yang terjadi ketika saya menekan tombol ini secara grafis. Saya tidak menulis kode untuk benar-benar meluncur dari satu layar ke yang berikutnya. Saya mendefinisikan ini secara visual dalam Interface Builder. Jika saya klik pada tanda panah ini, kita dapat melihat bahwa saya memberikan hal ini nama. Saya menyebutnya showDivisions, dan ini adalah agar saya dapat mengetahui apa transisi akan segera terjadi, dan kita akan melihat mengapa hanya sebentar. Begitulah cara saya sudah kabel sampai layar yang berbeda di app saya. Jika ini adalah sebuah tombol, misalnya, ketimbang tampilan tabel, Saya bisa mengendalikan klik pada tombol, tarik ke layar berikutnya, dan itulah bagaimana saya bisa melakukan navigasi dengan cara itu. Benar-benar cepat, jika kita datang ke MasterViewController tersebut, lagi, kita hanya akan menentukan daftar hal-hal yang akan ditampilkan dalam tampilan tabel. Di sini saya katakan saya ingin Anda untuk mengambil file plist, dan saya ingin Anda untuk memuatnya ke dalam kamus, dan sekali Anda memiliki kamus itu, aku akan menjawab pertanyaan-pertanyaan yang sama lagi. Berikut adalah sejumlah bagian. Satu, ada satu baris untuk setiap liga, dan teks dari setiap sel harus berupa yang pertama, liga pertama, liga kedua, dan seterusnya. Akhirnya, aku akan menggunakan metode ini yang baru saja kita saw disebut prepareForSegue, dan ini adalah metode yang akan dipecat ketika saya klik pada salah satu baris dan karena itu mengaktifkan transisi yang yang saya set dengan panah. Ini mengatakan bahwa saya dapat memiliki beberapa hubungan dari satu layar ke yang lain. Jika saya memiliki 2 tombol dan setiap tombol akan membawa Anda ke layar yang berbeda Aku akan memiliki 2 segues, 1 untuk setiap tombol. Tapi prepareForSegue ini, sekali lagi, akan digunakan kembali untuk setiap hubungan yang berbeda, sehingga berarti bahwa saya perlu cara mengidentifikasi jika Anda menekan tombol pertama atau Anda menekan tombol kedua. Ingat ketika saya memberikan yang segue nama, ini showDivisions, itulah bagaimana saya sekarang tahu bahwa ini adalah segue yang diaktifkan. Yang saya ingin lakukan adalah saya ingin mengatakan Saya ingin mencari tahu apa yang saya hanya memukul, dan sebagainya untuk mendapatkan itu, saya bisa mengatakan saya ingin indexPath untuk baris yang dipilih, ingat indexPath hanya mengatakan di mana saya hanya diklik, dan kemudian saya ingin mengatakan saya ingin mencari tahu di mana aku akan. DestinationViewController ini, itu adalah milik segue tersebut. Itulah layar aku akan, jadi saya tahu bahwa layar aku akan disebut DivisionsViewController karena saya membuat kelas itu, dan jadi sekarang jika saya mengatakan d.divisions Sekarang saya menetapkan milik pengontrol tampilan saya akan pergi ke. Ini adalah bagaimana saya mengirim data dari satu layar ke layar lain. Hanya melihat DivisionsViewController ini Anda dapat melihat di sini bahwa dalam file h. ada adalah bahwa divisi properti, dan itulah apa yang saya pada dasarnya mengisi, jadi itulah bagaimana saya tahu bahwa saya menampilkan divisi sesuai dengan liga yang saya diklik, dan sekali lagi, tampilan tabel yang sebenarnya terlihat hampir sama, hanya menjawab mereka 3 pertanyaan sederhana serta mengidentifikasi apa yang terjadi ketika Anda pindah ke layar berikutnya. Hanya beberapa hal lain di sini. Anda melihat di atas di sini bahwa daripada mengatakan # include Saya sekarang mengatakan # import. Ini hanyalah hal Objective-C. Impor pada dasarnya adalah versi lebih bagus dari meliputi, dan misalnya, kita perlu tahu apa kelas ini, jadi saya tidak bisa hanya mengatakan DivisionsViewController. Jika kita tidak hashtag dalam standardio.c file c. Kami compiler tidak tahu apa printf itu. Demikian pula, jika saya tidak mengimpor DivisionsViewController tersebut compiler benar-benar tidak tahu apa DivisionsViewController adalah. Hanya pastikan bahwa dalam file yang berbeda. Anda m Anda pastikan untuk mengimpor h yang sesuai. file sehingga compiler tahu apa yang terjadi. Akhirnya, apa yang Apple akhirnya tidak akan menampilkan beberapa data menggunakan tampilan web, sehingga pandangan web adalah obyek di mana Anda dapat menanamkan browser web sedikit dalam aplikasi Anda. Yang perlu Anda lakukan adalah menyediakan URL ke browser web Anda, jadi saya ingin pergi ke mlb.mlb.com, dan ini adalah bagaimana saya dapat mengakses halaman rumah untuk setiap tim, dan sebagainya dengan lewat di URL ini tampilan web dapat menampilkan ini untuk saya, dan saya bisa melihat sekitar, dan simulator sedang digunakan oleh yang satu. Sekarang ini berasal dari plist saya. Jika saya klik ini ini juga datang dari plist saya, dan sliding ini ditangani dengan mendefinisikan segues. Saya klik ini dan satu lagi, dan sekarang di sini adalah UIWebView saya, jadi hanya seperti itu inilah website untuk URL yang saya hanya tertanam, dan saya tidak perlu menangani apa pun gila. Ini adalah bagaimana untuk menampilkan halaman web. Hal-hal seperti tombol ini kembali ke sini juga diberikan kepada saya benar-benar gratis karena saya sudah didefinisikan hubungan ini menggunakan segues. Ada pertanyaan? Ya. [Mahasiswa] Jadi, ketika Anda menggunakan alloc, Anda tidak perlu sesuatu yang gratis? Tepat, ketika Anda menelepon alloc init dan Anda tidak perlu membebaskan itu. IOS akan menangani semua itu untuk Anda. Ini luar biasa, dan Anda tidak melanggar aturan. Ya. [Siswa] Jika Anda adalah untuk menyertakan tim lagi yang bisa muat di layar, akan secara otomatis memiliki pilihan gulir, atau adalah bahwa sesuatu yang Anda perlu menambahkan? Tepat, jika saya memiliki tim lebih, misalnya, maka secara otomatis akan menangani bergulir bagi saya, dan semua kekhawatiran kinerja dengan meja besar juga ditangani benar-benar bagi saya. Pertanyaan lain? Semua kode ini akan diposting. Kami semacam dipoles sedikit rincian lebih kecil, namun hal-hal seperti pengaturan beberapa properti ke tampilan web hanya hal-hal yang bisa Anda peroleh dengan browsing dokumentasi Apple, yang benar-benar, benar-benar baik ditata. Mereka memiliki banyak aplikasi sampel dan contoh penggunaan API yang berbeda, jadi pasti membaca dengan teliti mereka jika Anda bisa. Hanya beberapa link bermanfaat Anda mungkin ingin melihat. Ini adalah beberapa panduan dokumentasi berguna. URL yang besar, jadi mereka dipersingkat. Ini pertama adalah seluruh perpustakaan dokumentasi. Ada bar pencarian kecil, jadi jika Anda mulai mengetik tombol itu akan mulai memberikan Anda semua informasi tentang semua hal yang dapat Anda lakukan dengan sebuah tombol. Saya juga menyertakan Panduan Table View Pemrograman. Ini menangani tampilan tabel lebih detail, bagaimana melakukan hal-hal seperti dinamis menambahkan sel atau sel mengedit atau menghapusnya. Ada banyak aplikasi sampel dari Apple yang akan menunjukkan Anda bagaimana untuk melakukan itu, dan akhirnya, ini yang terakhir adalah Pedoman Human Interface, dan ini pada dasarnya beberapa diskusi komponen UI, hal-hal seperti tidak membuat sebuah tombol yang 4 piksel dengan 4 piksel. Itu ide yang buruk, dan hal-hal lain bahwa Apple ingin Anda lakukan untuk mendorong desain yang baik. Setiap pertanyaan terakhir sebelum kita selesaikan? Baiklah, pasti merasa bebas untuk-kita akan memiliki label khusus pada Discuss. Kami akan memiliki IOS satu, jadi pasti merasa bebas untuk memanfaatkan itu. Jika Anda ingin bekerja dengan teman sekelas Anda pada proyek-proyek atau membantu mencari tahu beberapa hal iOS random merasa bebas untuk email saya, dan pasti teliti semua kode online karena hanya dalam kepentingan waktu kami jenis dipoles lebih berbutir halus rincian hal. Tetapi jika tidak, maka keberuntungan pada proyek Anda iOS, dan saya berharap kami memiliki masuknya besar aplikasi di App Store. [CS50.TV]