Indonesian Subtitles for Stanford University Developing iOS 7 Apps: Lecture 2 - Xcode 5



Subtitles / Closed Captions - Indonesian

>> Stanford University.

>> Paul Hegarty: Oke. Nah, selamat datang untuk kuliah nomor dua dari CS 193P untuk musim gugur dari 2013/2014 tahun akademik. Dan hari ini kita akan memiliki beberapa slide di awal, sedikit lebih berbicara, dan kemudian aku akan memiliki cukup demo besar yang akan mencoba

dan mudah-mudahan mensintesis semua hal yang saya telah berbicara tentang pada slide untuk dua kuliah pertama, yang adalah bahwa kita akan mulai membangun permainan kartu kami. Baik. pencocokan permainan kartu ini akan menjadi substrat kami selama dua minggu pertama mempelajari beberapa Objective-C, belajar tentang Xcode, belajar tentang bagaimana iOS kait

up controller, dan pandangan, dan model untuk membuat UI. Jadi, jika Anda ingat dari terakhir kali, kami melakukan hal kartu ini yang - kami melakukan seluruh kartu. Itu adalah kelas yang sangat sederhana. Punya beberapa sifat - tiga sifat sana - dan satu metode.

Dan itu cukup banyak itu. Dan jadi hari ini kita akan pergi dan melakukan kelas lain, yang merupakan dek, oke? Dek kartu. Dan ingat, bahwa kartu dan deck yang generik; mereka tidak spesifik untuk bermain kartu, kan?

Sebuah kartu bermain, seperti ace klub atau raja hati - sesuatu yang memiliki semua yang di dalamnya - itu hal kartu bermain. Ini adalah kartu umum dan deck. Jadi ini bisa menjadi setumpuk kartu flash, dek kata-kata bahasa asing yang Anda coba

untuk belajar atau apa pun. Jadi kita berusaha untuk menjaga dek ini dan kelas kartu agak generik. Jadi, inilah dek. Seharusnya terlihat akrab dalam hal struktur dasar, kan? Kami mengimpor kerangka superclasses kami di sana,

dan kemudian jelas mengimpor file header kita sendiri dalam implementasi kami. Dan antarmuka untuk dek akan memiliki dua jenis ini metode mendasar: Satu menambahkan kartu untuk dek dan satu kali seri kartu acak dari dek. Baik? Dan add kartu ke geladak sedikit baru untuk Anda

karena Anda dapat melihat itu memiliki dua argumen. Baik? Ini adalah metode pertama Anda pernah melihat yang memiliki dua argumen. Sejauh ini Anda hanya melihat metode tanpa argumen atau metode dengan satu argumen seperti itu - pertandingan - pertandingan memiliki satu argumen atau setter,

mereka juga memiliki satu argumen. Jadi melihat bahwa ketika Anda memiliki beberapa argumen dan tujuan, melihat mereka jenis diselingi dengan nama metode. Baik? Jadi nama metode ini, Metode lama ini menambahkan usus kartu di usus bagian atas.

Itulah nama metode ini. Baik? Jadi di bagian atas sebenarnya adalah bagian dari nama metode ini. Dan argumen, seperti kartu yang Anda akan menambahkan dan di atas - yang merupakan Boolean apakah untuk menambahkannya di atas dek atau di bagian bawah dek -

Oke, argumen-argumen yang diselingi. Dan kita akan melihat bagaimana Anda memanggil metode seperti dalam sekejap di sini. Dan kemudian menarik kartu acak seperti, Anda tahu, mirip dengan getter dalam hal mengembalikan nilai dan tidak memiliki argumen. Tapi ini bukan pengambil karena kami tidak membuat ini sebuah properti.

Dan itu jenis penting untuk memahami Anda bisa membuat ini properti seperti properti read-only atau sesuatu yang membacanya, tapi karena menarik kartu acak semacam melakukan sesuatu, memiliki jenis algoritma untuk itu - mekanisme - Anda biasanya tidak akan membuat sebuah properti.

Ini semacam penyalahgunaan getter untuk melakukan itu. Sebuah getter adalah benar-benar hanya menetapkan dan mendapatkan nilai. Ini mungkin memiliki efek samping, seperti pengaturan mungkin memperbarui UI atau mendapatkan mungkin pastikan itu diinisialisasi pertama - hal-hal semacam. Anda tidak akan - sesuatu yang melakukan sesuatu

seperti menggambar kartu tidak akan menjadi sebuah properti. Sekarang, jika Anda ingin memiliki, seperti, bahwa pada argumen atas opsional, oke, satu-satunya cara untuk melakukan itu di Objective-C - jelas kita perlu file header kami ada - satu-satunya cara untuk melakukan itu di Objective-C adalah

untuk menyatakan metode baru, tambahkan usus kartu tanpa di atas di atasnya. Jadi ini adalah metode yang sama sekali berbeda, sama sekali tidak terkait dengan metode lain kecuali bahwa dalam pelaksanaannya metode lain ini kita hanya akan untuk memanggil yang lain, oke? Jadi di kartu add kita akan mengatakan diri menambahkan kartu di usus bagian atas,

apapun yang kita inginkan default menjadi, yang saya akan katakan adalah tidak ada. Baik? Jadi hanya memahami bahwa, Anda tahu, dalam beberapa bahasa, seperti, beberapa argumen dapat opsional atau Anda jenis bisa overload hal yang memiliki nama metode yang sama memiliki argumen yang berbeda.

No Di Objective-C setiap metode benar-benar berbeda dan memiliki nama yang berbeda. Dan argumen tambahan yang diselingi seperti itu. Baik? Jadi ini akan menjadi dua metode yang berbeda. Masuk akal? Baiklah.

Jadi mari kita bicara tentang implementasi kami dari dek kami. Jadi dek kami hanya akan berisi sekelompok kartu. Kita perlu semacam struktur data internal untuk menyimpan semua kartu kami di. Dan apa yang kita akan lakukan adalah kita akan mendapatkan array bisa berubah. Jadi Anda sudah melihat kelas NS array,

yang merupakan array kelas dasar, yang merupakan array dari objek. Benda-benda, dengan cara, dalam array dapat dari setiap kelas. Ada benar-benar ada cara untuk menentukan apa jenis kelas dari objek dalam array. Beberapa bahasa memungkinkan Anda untuk melakukan itu.

Anda dapat menentukan "Ini adalah sebuah array string "dan ia tahu itu. Tapi di Objective-C Anda tidak bisa melakukan itu. Dan kita akan berbicara tentang bagaimana kita berurusan dengan itu. Itu sedikit dari barat liar Objective-C, tetapi ada cara untuk jenis cek

dan melihat apa benda yang jika Anda ingin untuk menjadi benar-benar aman tentang hal itu. Tapi dalam kasus ini kita hanya memiliki array bisa berubah ini. Dan sarana bisa berubah bahwa kita dapat menambahkan objek ke array. Biasanya sebuah array NS adalah kekal. Baik? Setelah itu dibuat, apa pun benda masukkan,

itulah benda-benda yang ada di dalamnya selamanya - Anda tidak dapat mengambil apapun dan Anda tidak dapat dimasukkan ke dalam apapun. Jadi jika kita ingin array di mana kita dapat menambahkan hal-hal, kita harus menggunakan subclass ini NS array disebut NS array bisa berubah. Baik? Anda dapat melihat bahwa itu sebuah properti.

Ini yang kuat karena kita ingin array ini tinggal di tumpukan asalkan kita menunjuk itu. Dan tentu saja, kami selalu menempatkan nonatomic ada. Baik? Jadi ini akan menjadi array kartu. Sekarang bahwa kita memiliki ini, kita bisa dengan mudah menerapkan menambahkan kartu, misalnya, dengan hanya mengatakan, "Jika di atas, kemudian masukkan objek,"

kartu, yang merupakan argumen untuk metode ini - Argumen pertama - "menambahkan indeks nol." Jadi menyisipkan objek menambahkan indeks adalah metode di NS array bisa berubah, tidak NS berbagai - hanya dalam NS array bisa berubah karena itu akan bermutasi itu - yang menyisipkan objek pada indeks dalam array

dan indeks nol akan menjadi puncak bahwa kita akan menentukan. Dan kemudian sebaliknya jika kita tidak akan meletakkannya di atas, kita akan meletakkannya di bagian bawah, kita akan menggunakan NS yang berbeda metode array bisa berubah disebut menambahkan objek.

Dan itu hanya menambah sesuatu pada akhir array. Jadi semua orang dingin dengan itu? Jadi saya kebanyakan hanya menempatkan metode ini di sini hanya menunjukkan ada beberapa metode yang berbeda pada array bisa berubah dan, Anda tahu, bagaimana kita dapat menggunakan argumen. Ini ada hal besar di sini; itu hanya jenis untuk mendapatkan lebih banyak digunakan

apa yang terjadi di sini. Baiklah. Jadi itu menambahkan kartu. Sangat, sangat sederhana. Dan ada masalah, meskipun. Dalam hal ini menambahkan kartu, jika kita buat dek

dan kemudian disebut kartu add, itu tidak akan berhasil. Baik? Ini akan melakukan apa-apa. Mengapa hal itu akan melakukan apa-apa? Karena kartu properti, baik-baik saja - self.cards adalah bagaimana kita mengakses properti kita sendiri - getter yang terlihat seperti itu secara default.

Jika kita tidak memberikan pengambil, itulah yang getter tampak seperti. Ini hanya akan kembali ini kartu underbar Misalnya variabel. Nah, bahwa kartu underbar contoh variabel ini akan untuk memulai dari nol karena semua variabel instance

dalam suatu objek Objective-C mulai nol. Mereka semua. Baik? Jadi termasuk pointer. Sehingga pointer akan menjadi nol, yang kita sebut nihil, yang berarti tidak menunjuk ke apa-apa, yang berarti tidak ada array, oke?

Kami mendapat pointer ke array yang tidak menunjuk untuk apa pun sekarang. Baik? Jadi itu masalah. Jadi ketika kita mengeksekusi kode di kartu add seperti self.cards menambahkan kartu objek, itu akan tidak crash tetapi tidak melakukan apa-apa, baik.

Baik? Karena saya memberitahu Anda bahwa Anda dapat mengirim pesan ke nil, mengirim pesan ke pointer, untuk benda-benda di mana itu tidak menunjuk untuk satu pada saat itu, dan itu tidak akan crash. Jika Anda mengirim pesan yang mengembalikan nilai, pesan yang tidak akan mengeksekusi kode apapun tetapi akan kembali nol.

Baik? Jadi banyak nol terbang di sekitar sini. Baik? Jadi bagaimana kita akan memperbaiki ini? Bagaimana kita akan membuatnya sehingga menambah karya kartu? Nah, kita bisa menempatkan sesuatu pada awal kartu add yang mengatakan, "Jika self.cards adalah nihil, kemudian pergi mengalokasikan array dalam tumpukan dan titik untuk itu, dan kemudian kita akan menggunakannya. "

Baik? Tapi itu berarti setiap kali kita memiliki menggunakan self.cards kita harus pergi berkeliling dan memeriksa dan pastikan itu tidak nihil. Dan itu akan sangat mengganggu. Baik? Itu akan sangat rawan kesalahan, bug-rawan, kita lupa untuk melakukannya di tempat.

Semua hal ini. Jadi tempat yang tepat untuk melakukan itu sedikit jika cek di getter, oke? getter bahwa kita memiliki di sana untuk kartu - itulah getter untuk kartu milik pribadi kami - bukan hanya mengembalikan kartu, mari kita garis yang tepat

di depan yang mengatakan, "Jika kartu adalah nihil, maka mari kita mengalokasikan satu di heap dan menetapkan untuk variabel contoh. " Baik? Jadi cara Anda mengalokasikan array dalam tumpukan adalah Anda menggunakan NS bisa berubah berbagai alokasi init. Jadi itu dua panggilan pesan bersarang di dalam satu sama lain.

alokasi mengalokasikan anggota dalam tumpukan, dan init menginisialisasi memori itu sehingga itu adalah, Anda tahu, array yang masuk akal. Dan kita akan melihat bagaimana kita membangun initializer kita sendiri di beberapa slide di sini. Jadi cara ini setiap kali Anda memanggil self.cards,

Anda dapat yakin bahwa itu tidak nil; itu setidaknya akan menjadi array kosong. Apakah semua orang memahami kode ini? Sangat penting untuk memahami hal ini. Ya. [Tidak terdengar]

>> Paul Hegarty: Oke. Jadi pertanyaannya adalah: Alih-alih memiliki kode inisialisasi ini berada di getter ini, mengapa saya tidak membuat initializer seperti init untuk dek dan dimasukkan ke dalam dek ini? Baik? Dan itu adalah pilihan lain.

Dan lagi, kita akan melihat initializer untuk bermain deck kartu, kita akan membuat initializer. Dan kita bisa melakukan itu. Tetapi memiliki inisialisasi hal ini menjadi lebih dekat dengan sebenarnya mendapatkan properti lebih - itu membuat init Anda kurang penuh sekelompok sampah seperti itu.

Dan ini disebut malas Instansiasi, by the way, melakukannya dengan cara ini. Kami malas menunggu untuk detik terakhir sampai kita instantiate. Pola ini adalah sesuatu yang setiap orang di Objective-C digunakan untuk,

dan Anda pasti harus menggunakannya lebih daripada melakukan hal-hal dalam init Anda. Dalam init Anda ingin, Anda tahu, mengatur hal-hal, menetapkan nilai-nilai itu, Anda tahu, tidak mudah gagal seperti ini. Baik? Tapi itu pertanyaan yang sangat bagus. Dan kita akan melihat init dalam beberapa slide.

Baik? Jadi cara ini kita dijamin self.cards adalah tidak pernah nihil. Ya? >> [Tidak terdengar] >> Paul Hegarty: Ya. Jadi garis bawah adalah dari kuliah terakhir.

Ingat bahwa ketika kita membuat sebuah properti, Objective-C otomatis tidak hal ini, menetapkan mensintesis: Kartu sama underbar kartu. Jadi dengan kata lain, itu memberikan instance variable disebut Nama underbar properti menjadi ruang penyimpanan untuk properti itu.

Jadi itu sebabnya kartu underbar secara otomatis dibuat bagi kita ada di belakang layar. Itu tanda mensintesis pop up dalam kode kami, tapi itu ada di belakang layar. Itu pertanyaan yang sangat bagus. Pertanyaan lain tentang ini?

Baik. Jadi mari kita runtuh ke bawah beberapa hal ini dan mencari di menarik kartu acak, oke? Jadi menarik kartu acak, semua ia ingin lakukan adalah mendapatkan kartu acak dari self.cards itu, oke? Jadi kode yang sangat sederhana juga. Jadi kita hanya mendapatkan integer acak.

Itulah yang arc 4 acak tidak jika Anda tidak tahu. Ini hanya fungsi C library. Ia mendapat integer acak. Kemudian yang kecil persen setelah itu berarti mod - Oke, integer modulo - dan kemudian self.cards.count adalah nomor kartu di self.cards kami.

Baik? Jadi kita hanya akan mendapatkan indeks acak ke self.cards, kemudian menetapkan kartu acak menjadi self.cards persegi Indeks kurung, oke? Jadi ini adalah bahwa tanda kurung yang sama untuk mengakses jenis array sintaks. Dan itu menarik,

yang self.cards persegi indeks kurung, sebenarnya, itu pesan kirim percaya atau tidak. Itu sama seperti self.cards objek pada indeks indeks. Baik? Ini hanya beberapa sintaks khusus dan gula sintaksis untuk membuatnya sehingga Anda tidak memiliki memiliki indeks add objek panjang.

Itu sebenarnya keberatan pada indeks subscript atau sesuatu dengan nyata panjang nama metode. Jadi ini hanya indah, sedikit sintaks yang sederhana. Tapi itu pesan kirim untuk mendapatkan kartu pada indeks dari array. Dan kemudian kita juga akan menghapus kartu yang

dari array karena ini adalah menarik kartu acak, oke? Ini menarik kartu keluar dari dek. Sehingga tidak di dek lagi, kan? Sekarang, ada masalah dengan kode ini juga, yaitu: Bagaimana jika dek kosong? Baik? Jika dek kosong, kemudian indeks unsigned akan

menjadi nol, benar, karena itu akan untuk busur 4 nol mod acak. Itu akan menjadi nol. Dan sehingga Anda akan mengatakan, "Kartu Acak sama self.card sub nol." Nah, itu akan crash program Anda

karena jika self.cards adalah array kosong, maka tidak ada objek pada indeks nol dan Anda akan untuk mendapatkan indeks array keluar batas. Baik? Jadi berhati-hatilah itu. indeks - Anda tidak bisa mendapatkan indeks - jika array tidak memiliki objek

indeks itu, Anda tidak bisa mendapatkannya. Sehingga mudah untuk memperbaiki, meskipun. Kami hanya akan mengatakan, "Jika self.cards menghitung," dengan kata lain jika ada hal-hal dalam array, "maka kita akan melakukannya. Jika tidak kita hanya akan mengembalikan kartu acak, "

yang saya dengan senang hati diinisialisasi nihil pada awal metode saya. Dan itu sebabnya aku jenis seperti hal ini menginisialisasi untuk nilai default yang Anda inginkan, kemudian atur, dan kemudian kembali. Dan cara itu jika pengaturan gagal karena beberapa alasan seperti ini - itu gagal karena tidak ada kartu di dek -

itu akan kembali default wajar. Itu hanya semacam gaya pengkodean hal. Baik? Kami melakukan hal yang sama dengan skor dan pertandingan. Baik? Pertanyaan tentang itu? Ya? [Tidak terdengar]

>> Paul Hegarty: Pertanyaan bagus. Jadi pertanyaannya adalah: Kapan saya menggunakan NS integer atau NSU bilangan bulat dibandingkan int atau bahkan NS nomor, yang adalah obyek yang kita belum berbicara tentang belum? Dan jawabannya adalah itu soal gaya. Dan kita akan berbicara sedikit tentang gaya yang

dan kapan harus menggunakan hal-hal ini. Di sini saya tidak benar-benar ingin menggunakan nomor NS yang merupakan objek ketika saya hanya menggunakannya, Anda tahu, sebagai hal yang lokal kecil seperti itu. Anda tidak akan pernah melakukan itu. Anda menggunakan nomor NS pada dasarnya

untuk lulus mereka untuk metode. Dan bahkan kemudian Anda bisa lulus int, Anda tahu, dan mengapung. Sehingga akan menjadi jelas seperti yang saya berbicara tentang nomor NS, yang akan kita lakukan minggu depan. Baik. Jadi itu untuk dek. Deck, kelas yang sangat sederhana juga.

Jadi mari kita pindah ke kelas lain, yang bermain kartu. Baik? Alasan saya menunjukkan Anda bermain kartu, Saya hanya ingin menunjukkan apa yang tampak seperti untuk membuat subclass dari kelas lain yang telah Anda tulis. Sehingga kartu bermain adalah subclass dari kartu. Dan ini adalah kartu tertentu seperti raja hati,

tiga berlian, semacam kartu, oke? Sekarang, ia memiliki sifat yang khusus untuk kartu bermain, yang merupakan jas dan peringkat. Baik? rank yang menjadi seperti tiga, empat, jack, raja, kan? Dan gugatan yang hati, berlian, klub.

Dan aku akan mewakili gugatan sebagai karakter tunggal - hati karakter, karakter klub. Ingat saya mengetik karakter klub saya pikir di kartu kita mungkin telah menunjukkan bahwa. Saya tidak tahu. Tapi Anda bisa mengetik satu karakter.

Unicode memiliki karakter untuk masing-masing empat sesuai. Jadi itulah yang akan saya setelan menjadi. Dan kemudian rank yang akan menjadi nomor antara nol dan tiga belas. Adalah raja itu? Ya. Mewakili peringkat tersebut.

Jadi itulah bagaimana aku akan mewakili dalam API publik saya. Dan di sini saya menggunakan pemberitahuan NSU integer bukan int unsigned. Jadi NSU integer dan int unsigned hampir persis hal yang sama. Satu-satunya hal tentang NSU integer itu typedef. Ini mungkin sedikit berbeda pada platform yang berbeda.

Sebagai contoh, 5s iPhone baru 64-bit processers. Jadi NSU bilangan bulat akan menjadi int 64-bit, int unsigned pada iPhone 5. Dan itu mungkin hanya sekitar 32-bit satu kembali pada iPhone 4 dan sebelumnya. Baik? Jadi itu sedikit berbeda.

Jadi int kecil. Kami mungkin tidak mewakili bilangan bulat. Tentu di sini kita hanya akan nol sampai tiga belas. Mungkin tidak masalah. Tapi, Anda tahu, kita tidak mewakili bilangan bulat yang begitu besar bahwa kita akan menggunakan bit ke-33.

Jadi perhatikan bahwa di kartu bermain kita override kartu Metode isinya. Baik? Kita mewarisi isi dari superclass kami. Dan dengan isi bawaan hanya mengembalikan nilai apa pun properti isinya adalah. Tapi di sini di kartu bermain kita akan menimpa isi

untuk benar-benar menghitung isi kami, berdasarkan ini dua sifat lainnya. Baik? Jadi kita override pengambil isi sehingga selalu mengembalikan string - isi kartu bermain ini - yang dihitung dari jas dan peringkat.

Anda melihat apa yang kita lakukan di sini? Jadi kita pada dasarnya mengambil penyimpanan isinya - Isi underbar - supernya kami dan mengabaikannya karena kita override getter-nya. Baik? Jadi ini adalah alasan yang valid sempurna mengapa kita melakukan ini sifat juga karena kita mungkin memiliki cara yang lebih baik

untuk melakukan hal-hal dari penyimpanan. Sekarang, inilah cara kita bisa menerapkannya: Kami hanya dapat kembali string, oke? NS string, string dengan format yang sama seperti printf-ing string. Jangan khawatir tentang sintaks yang terlalu banyak. Dan aku printf-ing string dengan persen D dan persen pada tanda.

Jadi persen D berarti integer; persen tanda berarti sebuah objek. Baik? Sebuah representasi string dari suatu objek. Dan kemudian aku hanya menggunakan pangkat dan jas. Jadi ini akan menjadi salah satu cara untuk melakukan isi saya. Ini bukan cara yang sangat baik karena, misalnya, jack hati akan mengatakan 11 hati, oke?

Ini tidak akan mengatakan J setidaknya; kami ingin mengatakan J, tidak 11. Jadi ini bukan cara yang sangat baik. Jadi bukannya saya akan membuat sebuah array yang memiliki semua hal yang benar seperti A untuk satu satu, dan J untuk 11, dan Q untuk 12, dan K untuk 13, kan? Jadi aku hanya membuat array ini di sini.

Di tengah-tengah ada aku harus dipotong untuk membuatnya sesuai, kan? Dan saya bahkan membuat nol tanda tanya be. Jadi jika peringkat Anda adalah nol, itu akan menjadi, seperti, tanda tanya, seperti, diset. Anda tahu, peringkat Anda pada dasarnya tidak diatur. Dan kemudian saya kembali string, yang mengambil peringkat keluar dari

bahwa array dan menambahkan ke atasnya sedikit jas string, jantung, atau klub, atau berlian. Semua orang memahami hal ini? Aku agak memberikan Anda ini sehingga Anda dapat melihat bagaimana kita mencampur dalam notasi array, dan pengiriman pesan, dan semua jenis dari mulus campuran di sana.

Baik? Jadi sekarang isinya mengembalikan J hati, atau 5 berlian, atau apa pun. Perhatikan bahwa peringkat kami benar-benar baik karena jika peringkat kita adalah nol, yang mulai keluar menjadi ketika kita mengatakan kartu bermain baru - semua variabel misalnya adalah nol sehingga rank akan menjadi nol -

kita mendapatkan tanda tanya bagus ini. Tapi setelan kami mulai sebagai nihil, dan itu akan menyenangkan jika gugatan juga kembali tanda tanya jika itu tak terkatakan, apakah itu nihil. Jadi di sini aku hanya override pengambil setelan mengatakan, "Jika kembali, jika setelan saya adalah nihil, kemudian kembali tanda tanya,

sebaliknya ketika baju saya tidak nil, kemudian kembali apa baju ini. " Baik? Jadi aku hanya jenis melindungi API saya untuk memastikan aku selalu kembali tanda tanya ketika pangkat atau jas tidak diatur. Ya.

>> [Tidak terdengar] >> Paul Hegarty: Maaf. Semua kecil di tanda - merah di tanda-tanda, maksudmu? Ya. Kira kita tidak mendapatkan itu di kartu. Tapi kita mungkin memiliki. Tapi ingat bahwa semua string yang kita akan bekerja

dengan di kelas ini adalah objek string, bukan bintang perawatan const, kan? Mereka string objek. Dan compiler, jika Anda menempatkan tanda di depan string, itu akan membuat objek string untuk Anda, oke? Jadi itulah yang orang-orang di tanda lakukan,

mereka membuat semua string yang menjadi objek string yang karena kita tidak dapat menempatkan bintang perawatan const dalam array NS. NS array untuk objek, jadi kita harus meletakkan benda-benda di sana seperti string NS. Mereka adalah benda. Baik? Pertanyaan bagus.

Ya? [Tidak terdengar] >> Paul Hegarty: Ya. Baik. Itu pertanyaan yang bagus. Jika kita telah menggunakan yang getter sama notasi yang kita gunakan untuk dipilih dan cocok untuk mengubah nama,

maka ketika kita menimpa kita harus menggunakan nama baru. Kita harus adalah apa pun. Sekarang, ini tidak terjadi di sini. Tapi aku tahu apa yang Anda katakan, dan ya, Anda harus menggunakan nama baru. pertanyaan besar.

Pertanyaan lain tentang ini? Baik. Sehingga membantu gugatan selalu kembali tanda tanya jika gugatan itu adalah nihil atau tidak diatur. Mari kita juga melindungi orang pengaturan setelan untuk sesuatu yang salah. Baik? Mari kita hanya membiarkan orang mengatur setelan menggunakan properti ini,

setter publik properti. Kami hanya akan membiarkan orang-orang mengatur setelan menjadi salah satu dari empat sesuai. Jadi aku hanya on the fly di tengah ada menciptakan sebuah array dari empat jas. Dan kemudian saya menggunakan metode ini mengandung objek;

apa kelas yang Anda pikirkan mengandung objek adalah dari yang sedikit di? Siapa saja? [Tidak terdengar] >> [Tidak terdengar] >> Paul Hegarty: Ini adalah metode berbagai NS, persis. Jadi mengandung objek adalah metode array yang NS. Saya mengirimnya ke array yang saya buat tepat di tempat sana.

Array yang memiliki hati, berlian, sekop, dan klub di dalamnya. Dan Aku hanya bertanya: Apakah Anda mengandung string ini? Dan yang berisi objek akan membandingkan isi string ini terhadap semua ini menggunakan metode sama. Sebenarnya, itu akan katakan adalah sama dengan semua empat dari mereka

dengan setelan sebagai argumen; tidak sama ke string - sama. Dan dalam string sama dilaksanakan oleh panggilan sama untuk string jika argumen adalah string. Pokoknya, lebih rinci dari yang Anda butuhkan mungkin ada. Tapi ini jelas melindunginya.

Jadi tidak ada cara kita dapat mengatur variabel penyimpanan jas internal kami untuk apa pun kecuali bagi mereka empat sesuai. Ya? [Tidak terdengar] >> Paul Hegarty: Pertanyaan bagus. Kalian tepat di atas itu.

Jadi setiap kali saya menggunakan tanda membuka braket persegi - yang biru - untuk membuat sebuah array, yang benar-benar menciptakan sebuah array baru setiap kali. Baik? Karena Aku berkata kepadamu bahwa tanda kurung persegi dan semua hal array ini adalah benar-benar hanya memanggil metode? Nah, yang memanggil metode seperti alokasi init dengan berbagai

dengan benda-benda atau sesuatu seperti itu. Kanan? Sehingga menciptakan itu. Jadi akan menyenangkan untuk memindahkannya keluar, dan kami akan melakukan itu. Meskipun, sekali lagi, berhati-hatilah untuk tidak preoptimize. Ini mungkin tidak akan membuat berbeda. Aku hanya akan pindah keluar untuk membuat kode bersih saya;

Aku tidak akan bergerak keluar untuk alasan kinerja. Ya? >> [Tidak terdengar] >> Paul Hegarty: Ya. >> [Tidak terdengar] >> Paul Hegarty: Pertanyaannya adalah: Apakah LLVM hanya mengurus

itu, mengoptimalkan yang keluar untuk Anda? Dan itu mungkin tidak akan karena itulah pesan send; itu tidak yakin apa yang mungkin ada efek samping dari itu. Tetapi dalam hal apapun, kita hanya akan melakukannya hanya untuk membuat kita kode terlihat lebih bersih. Dan kinerja akan diabaikan di sini.

Kita bicara tentang UI. Ini bahkan tidak dekat. Satu hal yang perlu dicatat, meskipun, sebelum kita melakukan itu adalah karena kami telah menerapkan kedua setter dan getter dari baju, kita sekarang diperlukan untuk melakukan tanda mensintesis. Baik? Dengan kata lain, biasanya kita tidak memiliki

untuk melakukan hal ini di tanda mensintesis. Itu akan dilakukan bagi kita. Tetapi jika kita melaksanakan kedua setter dan getter, sekarang kita lakukan. Sangat mudah untuk dilakukan karena itu selalu dari bentuk yang sama persis ini. Tapi kita harus melakukannya.

Baik. Jadi, inilah - mari kita lakukan apa yang kita katakan. Mari kita bahwa array kecil dari pakaian yang kita miliki di sana dan memasukkannya ke dalam metode lain. Sekarang, sekali lagi, aku tidak mendapatkan kinerja apapun dengan melakukan hal ini, oke? Aku hanya mendapatkan kode kebersihan dengan melakukan hal ini karena aku masih - setiap kali saya sebut jas valid,

itu akan membuatnya lagi. Sekarang, aku bisa menggunakan variabel statis. Ini adalah C. Saya bisa menyimpan array ini. Mulai menjadi nihil. Jika itu nil, set ke array ini, dan kemudian itu hanya akan menciptakan sekali.

Tetapi berhati-hatilah. Sekali lagi, kode kebersihan dan dimengerti sepuluh kali lebih penting dari kinerja seperti ini. Jadi, kecuali Anda akan memanggil pakaian valid di loop batin ribuan kali,

itu tidak benar-benar akan peduli. Tapi setelah saya pindah yang menjadi metode yang berbeda, semacam ini metode yang saya pindah ke sedikit berbeda. Perhatikan memiliki plus. Anda melihat plus ada bukannya minus memulai itu? Ditambah NS berbagai pakaian valid?

Baik. Sebuah metode plus adalah metode kelas. Baik? Itu berarti Anda kirimkan ke kelas, tidak sebuah instance dari sebuah objek. Baiklah? Jadi karena Anda tidak mengirimnya ke sebuah contoh, Anda tidak dapat menggunakan variabel misalnya atau sesuatu seperti itu.

Anda dapat hanya semacam melakukan hal-hal generik. Jadi satu-satunya hal yang kita benar-benar menggunakan metode plus untuk, metode kelas, adalah dua hal yang benar-benar: Menciptakan hal-hal seperti di slide sebelumnya ketika kita memiliki string dengan format yang - itu metode kelas yang menciptakan string untuk kita; dan kemudian juga metode utilitas seperti ini,

seperti konstanta kembali dan hal-hal yang, Anda tahu, kelas kami ingin dan metode utilitas. Tapi inilah contoh. Dan cara kita sebut metode kelas - Anda sudah melihat saya memanggil beberapa dari mereka - tapi di sini menyebutnya sini kita meletakkan membuka braket persegi,

nama kelas, nama metode. Dan lagi, itu bisa memiliki argumen. Itu hanya seperti metode lain. Tapi semua orang memahami hal ini? Baik. Dan jika Anda kembali dan melihat beberapa slide dan Anda melihat braket terbuka persegi NS string, string dengan format yang,

tepat jenis yang sama dari sintaks. Baik? Jadi itulah yang metode kelas terlihat seperti. Sekali lagi, untuk menciptakan hal-hal pada dasarnya dan untuk metode utilitas. Dan kita akan berbicara tentang perbedaan: Kapan kita menciptakan sesuatu

dengan metode kelas dibandingkan alokasi init? Kita akan berbicara tentang itu segera. Saya juga akan membuat pakaian valid publik. Dan bahwa cara orang-orang yang menggunakan kartu saya bermain tahu apa pakaian yang valid adalah. Dan semua harus saya lakukan adalah memasukkannya ke dalam file header.

Boom, itu publik sekarang. Baik? Jadi mari kita melakukan hal yang sama di sini dengan mereka string peringkat. Baik? Jadi aku akan mengambil orang-orang jajaran string - bahwa array peringkat string di atas sana - dan aku akan menempatkan bahwa dalam metode kelas.

Baik? Dan lagi, ini adalah untuk dibaca, bukan untuk kinerja. Karena setiap kali saya sebut peringkat string, itu masih akan untuk membuat hal itu lagi. Dan kemudian saya menyebutnya bukan di sana. Dan aku tidak akan membuat peringkat string itu sendiri publik,

tapi saya akan membuat metode kelas lain yang disebut max rank, yang hanya melihat bagaimana banyak string yang di peringkat string. Dan aku akan kembali bahwa sebagai metode umum. Jadi ada tiga metode kelas bagi Anda untuk tenggelam gigi Anda ke - dua dari mereka publik, satu tidak. Baiklah.

Dan jadi mereka semua metode utilitas, kan? Kami tidak mengakses setiap variabel misalnya dalam setiap metode tersebut, oke? Itulah satu-satunya alasan aku menunjukkan mereka, hanya begitu Anda melihat apa metode kelas terlihat seperti. Kami juga bisa menimpa setter peringkat hanya

menjadi lengkap di sini untuk memastikan itu tidak memungkinkan Anda untuk menetapkan peringkat yang salah seperti set peringkat 15 - tidak ada kartu seperti 15. Jadi mari kita pastikan bahwa peringkat kurang dari max rank, yang merupakan metode utilitas baru saja kita lakukan. Baik? Apakah itu semua datang bersama-sama untuk Anda, masuk akal?

Jadi ini adalah jenis bahan referensi. Anda memiliki slide ini yang memiliki semua anotasi dari semua hal yang saya katakan. Jadi jangan ragu untuk kembali dan melihat itu dan mengingatkan diri sendiri tentang semua ini NS array, sintaks, dan semua metode kelas, semua itu.

Baik. Hal terakhir yang kita akan melihat di adalah bisnis metode init. Baik? Jadi kita akan memiliki kelas lain di sini disebut bermain kartu dek. Baiklah? Dan dek kartu bermain adalah subclass dari dek.

Baiklah? Dan tidak memiliki API publik. Ini hanya akan menimpa metode yang mewarisi langsung dari NS objek - Oke, NS keberatan melalui dek, yang tidak menyentuhnya - semua cara untuk bermain deck kartu.

Dan metode yang disebut init. Baik? Jadi ini adalah init yang sama, jenis yang sama metode bahwa ketika kita buat array - bahwa array bisa berubah kita mengatakan NS bisa berubah berbagai alokasi init. Jadi seseorang akan memanggil kartu bermain metode deck init ini - yaitu Anda dalam pekerjaan rumah Anda akan menyebutnya

dengan melakukan bermain kartu deck alloc, dan kemudian di luar, init. Baik? Dan itulah bagaimana Anda akan untuk membuat dek kartu bermain. Dan itu adalah bagaimana kita membuat sebagian contoh benda - tidak semua. Kadang-kadang kita melakukan hal-hal seperti NS string, string dengan format yang.

Tapi sebagian besar waktu - lebih dari separuh waktu - kita lakukan alokasi dan kemudian pada init luar. Baik. Dengarkan baik-baik: Jangan pernah menyebut bahwa hal alokasi tanpa pembungkus init sekitarnya. Baik? Jangan pernah melakukan itu. Itu tidak masuk akal telah obyek dialokasikan

dalam tumpukan yang belum pernah diinisialisasi. Selalu memiliki bersarang. Dan sebaliknya: Jangan pernah menyebut bahwa init kecuali ketika Anda membungkusnya di sekitar alokasi. Dan pasti tidak pernah menyebut bahwa init lebih dari sekali. Baik? Dan jika Anda mematuhi aturan saya hanya menyebutnya dibungkus

di sekitar alloc, Anda tidak bisa menyebutnya lebih dari sekali. Baik? Init bukanlah sesuatu seperti Anda dapat kembali init. Init terjadi sekali setelah alloc, dan hanya itu. Baik? Itu adalah aturan keras dan cepat kita tidak pernah istirahat. Baik? Jadi Anda dengar di sini. Jangan lupa.

Baiklah. Mari kita lihat pada jenis kembali bloon metode init ini, oke? Anda mungkin berpikir metode init ini harus kembali kartu bermain Bintang dek karena itu jenis menginisialisasi dan mungkin itu kembali sendiri. Dan pada kenyataannya, init tidak selalu kembali diri, oke?

Jadi init selalu akan kembali diri. Baik. Lebih whackiness sana, yang saya akan menjelaskan. Hanya untuk kenyamanan, selalu kembali diri sehingga Anda dapat melakukan, seperti, bermain kartu dek alloc init, mengirimkannya pesan. Baik? Jadi itu hanya kenyamanan yang ia mengembalikan diri. Tapi itu tidak bisa benar-benar memiliki kartu bermain yang kembali jenis yang

Bintang dek karena mewarisi ini dari NS objek. Dan NS objek yang sudah didefinisikan sebagai bintang objek NS. Kamu melihat? Jadi itu agak aneh bahwa Anda mewarisi metode yang nilai kembali akan untuk mengubah setiap kali Anda, Anda tahu, mengesampingkan itu. Jadi mereka menciptakan hal baru ini - ini baru untuk iOS 7,

dengan cara - disebut tipe misalnya. Dan apa contoh jenis berarti ini akan kembali obyek yang dari contoh yang sama - jenis yang sama, yang sama jenis kelas - sebagai objek yang Anda mengirim pesan ini ke. Baik? Yang masuk akal untuk inits.

Dan di kelas ini yang mungkin semua Anda akan menggunakan ini untuk di sini. Jadi, jika Anda tidak benar-benar mengerti apa yang saya katakan - itu dijelaskan dalam slide - tetapi jika Anda tidak benar-benar memahaminya, hanya tahu bahwa setiap kali Anda melakukan initializer,

itu akan kembali jenis contoh sebagai jenis kembalinya dan Anda akan selalu kembali diri. Baik? Sekarang, juga hanya mengambil kata saya untuk itu. Kami akan melakukan ini baris berikutnya kode serta karena mereka benar-benar aneh. Bahwa baris pertama, diri sama yang super init, yang aneh.

Yang super aneh. Baik? Menetapkan sesuatu untuk diri di Objective-C - tidak pernah melakukan itu, kecuali untuk satu kali ini dan itu dalam init Anda. Baik? Anda mengambil diri dan Anda menetapkan untuk memanggil initializer superclasses Anda

sehingga superclass Anda akan diinisialisasi. Mengapa kita menugaskan hasil untuk diri? Ini semacam sejarah kuno mengapa ini telah dilakukan untuk waktu yang lama. Pada dasarnya kita sedang memeriksa kembalinya init superclasses kami untuk memastikan itu benar diinisialisasi.

Karena setiap saat jika initializer Anda tidak dapat menginisialisasi itu sendiri, itu harus kembali nihil. Baik? Dan yang memungkinkan semua orang tahu subclass Anda atau siapa pun mencoba untuk alokasi dan menginisialisasi Anda, Anda tidak bisa membuat objek yang terbentuk. Baik? Sehingga Anda dapat melihat bagaimana kode ini, aneh seperti itu -

diri sama yang super init, dan kemudian jika diri, Aku akan menginisialisasi sendiri, kembali diri - yang akan memastikan bahwa saya bahkan tidak mencoba menginisialisasi sendiri jika superclass saya, ketika saya menelepon init, Anda tahu, tidak bisa menginisialisasi itu sendiri. Baik? Jadi lakukan saja.

Jika Anda tidak memahaminya, jangan khawatir tentang hal itu terlalu banyak. Lakukan saja. Sekarang, satu hal di sini adalah kita berbicara tentang init tanpa argumen. Hal ini dimungkinkan untuk memiliki initializers dengan argumen karena kadang-kadang Anda perlu argumen

untuk benar menginisialisasi kelas. Dan kita akan berbicara tentang yang sedikit lebih pada hari Senin. Baik? Jadi hari ini kita hanya akan jenis tulang telanjang init. Jadi, apa ini init perlu lakukan? Apa yang harus saya lakukan untuk memiliki diinisialisasi bermain baik terbentuk dek kartu?

Nah, dek kartu bermain memiliki 52 kartu di dalamnya, satu dari setiap jenis kartu. Baik? Raja klub, tiga berlian - semua 52 dari mereka. Jadi saya hanya perlu iterate untuk semua pakaian, dan kemudian iterate melalui semua jajaran, dan menciptakan kartu, dan menambahkannya ke diri saya sendiri.

Jadi, inilah aku iterasi melalui pakaian, iterasi melalui jajaran. Semua orang keren dengan itu? Lalu aku akan mengimpor kartu bermain karena aku akan untuk membuat kartu bermain, bermain kartu alokasi init. Lalu aku akan mengatur

peringkat yang kartu, menetapkan bahwa sesuai kartu. Pangkat dan jas adalah variabel iterasi kecil saya di sana. Dan kemudian aku akan menambahkannya ke diri saya sendiri. Aku dek, jadi itu baik-baik saja. Semua orang keren dengan kode itu? Jadi sekarang aku baik-dibentuk bermain kartu dek dan saya dapat digunakan

untuk menarik kartu acak dan semua itu, yang Anda perlu lakukan untuk pekerjaan rumah Anda. Baik? Dan pada kenyataannya, untuk pekerjaan rumah Anda Anda akan memiliki untuk mengetik keempat dari kelas-kelas di. Saya ingin Anda untuk mendapatkan kelas pengalaman masuk, mengetik sesuatu, menonton sebagai Xcode mengeluh pada Anda

Anda salah ketik hal-hal, dan hal-hal seperti itu. Dan kemudian Anda akan akan menggunakan deck kartu bermain dan bermain kartu. Nah, bermain kartu dek dan kartu benar-benar dua yang utama Anda akan menggunakan untuk melakukan pekerjaan rumah Anda. Baik? Pertanyaan tentang itu?

Baik. Jadi itu untuk slide. Jadi sekarang aku akan melakukan demo tua besar. Dan demo ini akan untuk mengintegrasikan semua yang telah Anda lihat sejauh ini, oke? Terutama yang MVC hal yang kita bicarakan, seperti tindakan sasaran, Anda tahu, menjatuhkan target

dan menembak tindakan atau outlet panah hijau yang menunjuk ke arah lain. Baik? Kami akan menunjukkan kepada Anda apa yang yang benar-benar terlihat seperti di Xcode. Saya pikir ketika saya bertanya siapa Anda telah melakukan Xcode, hampir setiap satu dari Anda mengangkat tangan Anda.

Jadi aku tidak akan menghabiskan terlalu banyak waktu berbicara tentang semua tombol di Xcode. Saya pikir saya akan cepat melewati mereka. Tapi jika Anda belum pernah menggunakan Xcode, itu di sangat banyak detail di slide kuliah. Ada semacam panduan ini.

By the way, jika Anda mengikuti bersama dalam slide kuliah, demo saya tidak akan persis seperti apa yang ada di slide. Slide menutupi sedikit lebih dari yang saya dapat menutupi dalam empat puluh menit di sini. Dan itu juga bahan referensi.

Baik? Jadi jika saya melakukan sesuatu hari ini di demo ini dan Anda seperti, "Oh, bagaimana dia melakukan itu?" jika Anda pergi melihat pada mereka slide, itu akan memberitahu Anda. Jadi tidak merasa seperti, "Aku harus marah menulis turun setiap tombol klik dia akan melakukan dalam empat puluh menit berikutnya. "

Tidak mungkin. Baik? Ikuti bersama di slide tersebut jika Anda ingin, atau hanya menutup laptop Anda, dan menonton, dan biarkan meresap di karena Anda akan harus mereproduksi apa yang saya lakukan dalam empat puluh menit berikutnya untuk pekerjaan rumah Anda. Dan mereka slide akan memandu Anda

melalui langkah demi langkah bagaimana melakukannya. Jadi jangan merasa seperti Anda perlu melakukan apa-apa sekarang tapi biarkan ini semua tenggelam di. Dapatkan merasakan apa yang terjadi. Baik? Dan kemudian ketika Anda duduk untuk melakukannya, Anda akan dipandu melalui itu.

Minggu depan kita akan berbicara lebih banyak tentang Objective-C, menjawab beberapa pertanyaan-pertanyaan yang lebih rinci seperti nomor NS dan beberapa hal-hal lain orang yang bertanya. Dan kita akan berbicara tentang beberapa hal tertentu tentang Objective-C seperti dinamis mengikat, dan protokol, dan hal-hal yang Anda tidak biasanya melihat sebanyak

dalam bahasa lain atau tidak ada dalam bahasa lain. Jadi kami akan mencoba dan menutupi semua itu. Jadi pada akhir minggu depan Anda sampai dengan kecepatan di Objective-C. Anda mulai benar-benar dijalankan dengan Xcode. Dan minggu setelah itu kita dapat benar-benar mulai melakukan beberapa,

Anda tahu, iOS daya tinggi 7 hal. Baik. Jadi demo di sini. [Tidak terdengar] itu. Baiklah. Jadi demo aku akan berjalan di Xcode. Jadi aku hanya akan meluncurkan Xcode.

Jadi Xcode Anda dapatkan dengan menjalankan - pergi ke toko aplikasi Mac Anda. Itu hal ini di sini, kan? Dapatkan app store pada Mac Anda, dan Anda hanya mencari Xcode, menemukannya. Gratis. Anda men-download dan Anda menjalankannya.

Baik? Ini sesederhana itu. Ini adalah apa yang akan terlihat seperti ketika Anda pertama kali membawanya ke atas, splash screen ini di sini. Sebagai kuartal berlangsung, ini akan mengisi dengan semua proyek yang Anda lakukan. Anda mungkin terbiasa bahwa jika Anda tahu Xcode.

Dan apa yang kita akan lakukan hari ini adalah membuat proyek baru. Anda dapat memeriksa proyek yang ada di luar kendali sumber atau Anda dapat membuat yang baru. Dan kita akan membuat yang baru. Jadi ketika kita membuat yang baru, ia ingin memberi kita sedikit bantuan dengan menawarkan untuk membuat template untuk berbagai jenis

aplikasi seperti permainan OpenGL. Baik. Ia akan membuat beberapa kerangka kerja untuk itu untuk Anda. Guru rinci aplikasi, sesuatu yang kita akan untuk melakukan kemudian di kuartal tersebut, meskipun kita akan untuk membangun semua kode diri kita sendiri; kami tidak akan menggunakan template ini.

Dan lihat aplikasi ini satu pun di sini pada dasarnya adalah tunggal MVC, yang adalah bagaimana kita akan itu mulai semua aplikasi kami di kelas ini - dengan MVC tunggal. Kemudian kita akan menambahkan lebih MVCs dan membangun. Baik? Jadi ini adalah dasar tunggal aplikasi MVC Anda. Jadi aku akan klik itu.

Dan di sini itu akan meminta beberapa informasi tentang hal itu seperti apa yang Anda ingin menyebutnya aplikasi ini? Ini adalah permainan kartu yang cocok saya telah memutuskan untuk memanggil Machismo, oke? Sehingga akan menjadi nama aplikasi kami hanya untuk bersenang-senang. Dan nama organisasi dapat apa pun yang Anda inginkan.

Ini akan muncul di header dari semua kelas yang Anda buat. Jadi saya membuat saya menjadi Stanford University. Anda dapat membuat Anda menjadi Bob Game House atau apa pun. pengenal ini harus unik untuk Anda. Jadi saya memiliki edu.Stanford.cs193p.instructor.

Anda mungkin memiliki edu.Stanford.cs193p dot Anda Sunet ID. Itu akan benar-benar unik. Ini terbalik DNS adalah cara yang benar-benar baik untuk membuat nama yang unik. Dan itu akan membuat nama yang unik untuk aplikasi ini

dengan menggabungkan ini dengan nama-nama. Sehingga Anda dapat melihat hal itu dilakukan di sini, bundel identifier ini. Dan kemudian kelas awalan ini - template ini akan membuat tampilan dan pengontrol bagi kita. Dan ini mengatakan, "Apa yang Anda ingin nama kelas controller Anda menjadi? "

Secara default itu akan disebut "controller tampilan," oke? Tetapi jika Anda mengetik sesuatu di sini seperti "permainan kartu," sekarang itu akan disebut "permainan kartu controller tampilan," yang merupakan nama sedikit lebih baik bagi kita. Jadi itu hanya awalan itu akan mengenakan nama controller Anda yang menciptakan untuk Anda.

Dan kemudian akhirnya di sini kita dapat membuat sebuah aplikasi di sini hanya untuk iPad, atau hanya untuk iPhone, atau aplikasi universal yang akan berjalan di kedua platform. Sekarang, ketika Anda membuat aplikasi universal, Anda masih memiliki untuk merancang Anda UI secara terpisah karena jika Anda memiliki aturan layar lebih, Anda hanya akan

untuk merancang UI yang berbeda. Baik? iPad bukan hanya iPhone besar. Anda dapat melakukan lebih banyak hal jika Anda memiliki lebih layar real estat. Tapi Anda masih mungkin memiliki banyak Anda MVC bersama, tepat, karena iPad mungkin memiliki subareas kecil yang berada di MVC

yang persis sama seperti pada iPhone atau sangat, sangat mirip. Jadi benar-benar didukung di iOS 7 untuk membangun aplikasi Target yang kedua platform dan memiliki alat-alat besar untuk membiarkan Anda membangun dua UI secara terpisah dan berbagi semua MVCs bawahnya. Baik? Kami akan melakukan iPhone hanya di sini saja

karena itu membuat layar kecil dan saya hanya memiliki begitu banyak real estate di sini. [Tidak terdengar] >> Paul Hegarty: Ya. Jadi pertanyaannya adalah: Jika aku di iPad saya dan saya menjalankan sebuah aplikasi yang iPhone saja, ya,

ada modus emulasi dasarnya yang akan jenis dari membuat hal yang besar iPhone berbentuk pada layar iPad. Jadi kita akan melakukan iPhone sini. Jadi itu saja. Aku akan memukul berikutnya. Berikutnya ia ingin tahu,

"Di mana Anda akan hal itu membuat proyek ini?" Saya sangat merekomendasikan meletakkan di direktori home Anda - di direktori yang disebut "pengembang" di direktori home Anda. Baik? Kecuali mungkin kita kerjakan kelas yang berbeda. Mungkin Anda memiliki CS 193P

di direktori home Anda dan kelas maka lainnya. Tapi intinya: Masukkan ke dalam direktori home Anda; tidak meletakkannya, seperti, di root atau di suatu tempat seperti itu. Yang di masa lalu menyebabkan masalah. Tetapi tempat yang bagus untuk meletakkannya di sini. Ini adalah direktori rumah saya, CS 193P ada.

Saya melihat direktori home, pengembang. Ini adalah di mana aku akan meletakkannya. Saya tidak memiliki proyek apa pun. Hal ini sedikit di bawah sini, kontrol sumber, kita akan berbicara tentang itu. Ini benar-benar baik terintegrasi ke Xcode, tapi kami tidak akan

membicarakannya saat ini. Jadi meninggalkan tidak diklik. Dan jadi inilah proyek baru kami. Anda bisa melihatnya menunjukkan layar ini, yang Anda dapatkan untuk dengan mengklik hal yang sangat top ini di sini. Jadi ini adalah jenis seperti pengaturan proyek kami.

Dan ada sejumlah besar pengaturan di sini. Kami akan bicara menjadi semua hal ini sebagai kuartal berlangsung. Tapi hari ini kita tidak akan berbicara tentang semua itu karena kami ingin fokus pada MVC kami. Dan MVC kami, hak ini di sini, main.storyboard, adalah pandangan kami. Baik? Itu pandangan kita tentang MVC kami.

Dan kemudian Anda melihat permainan kartu ini lihat kontroler M dan H? Itu controller kita. Tidak ada model yang di sini. Model Anda akan menjadi empat kelas - deck, kartu, bermain kartu, bermain kartu dek - yang akan menjadi model Anda.

Jadi Anda harus memasukkan bahwa dalam. Saya akan menunjukkan pada akhirnya bagaimana untuk melakukan itu. Hal kecil di sini, permainan kartu [tidak terdengar] dot H dan M, kita akan berbicara tentang singkat itu, terutama ketika kita mulai berbicara tentang hal-hal seperti multitasking. Tapi aku ingin hanya memindahkan keluar dari jalan.

Jadi saya sering menempatkan mereka di sini dalam folder file pendukung. Dan Anda hanya dapat mengambil file apapun, dengan cara, dan memindahkan mereka di mana pun Anda inginkan di sini untuk jenis dari membersihkan pandangan Anda. Jadi di sini saya punya pandangan saya dan controller saya hanya menampilkan di sini. Baik? Jadi mari kita langsung ke tampilan

dan melihat apa yang tampak seperti. Jadi inilah pandangan saya. Ini adalah iPhone kosong 5 berukuran, kan? A tinggi dan kurus lihat. Dan itu kosong. Tidak ada yang baru.

Itu putih. Daerah ini di sebelah kiri, dengan cara, di mana kita diklik pada file-file ini, yang disebut "navigator." Dan Anda tidak hanya dapat menavigasi semua file Anda di sini, tetapi Anda dapat menavigasi break point Anda, dan membangun masalah, dan hierarki kelas Anda.

Semua yang tersumbat di sini. Jadi sekali lagi, sebagian besar dari Anda tahu Xcode, sehingga Anda mungkin tahu sebagian besar dari hal ini. Kami akan demoing semua ini sebagai kuartal berlangsung. Dan daerah ini di sini disebut "daerah utilitas." Dan ini adalah di mana Anda pada dasarnya mencari tahu detil

tentang apa yang terjadi di sini. Jadi inspektur untuk atribut, dan dimensi, dan koneksi, dan hal-hal seperti itu pergi di sini. Dan ini juga di mana Anda dapat menarik keluar hal-hal bahwa Anda akan gunakan untuk membangun antarmuka pengguna Anda karena kita akan membangun pandangan kami sepenuhnya grafis.

Baik? Kami tidak akan menulis kode, untuk sebagian besar, untuk membangun pandangan kami. Sebagai kuartal berlangsung, kita akan belajar lebih banyak tentang bagaimana untuk membangun pandangan kita dalam kode, tapi kita akan mulai out hanya murni melakukan pandangan kita dengan hal-hal grafis menyeret dan kabel mereka.

Dan kami akan menempatkan kode kita di controller kita. Ini kedua belah pihak dapat disembunyikan dan ditampilkan dengan dua tombol ini. Lihat? Anda dapat menyembunyikan mereka. [Tidak terdengar] ini mungkin muncul juga, daerah ini di sini, Tombol kecil ini di sini. Ini disebut "garis besar dokumen."

Ini benar-benar pesolek berguna. Tapi sekali lagi, kita tidak akan itu berbicara tentang hari ini. Kita hanya bisa berbicara tentang begitu banyak sekaligus. Dokumen outline. Ini hanya menunjukkan Anda semua contoh benda dalam pandangan Anda dalam bentuk garis umum.

Jadi Anda benar-benar dapat dengan mudah menemukan mereka dan hubungan mereka satu sama lain. Hal lain yang dapat Anda lakukan adalah saya tidak ingin iPhone ini 5 berukuran hal karena layar saya adalah resolusi rendah di sini sehingga bekerja pada proyektor. Jadi aku akan klik tombol kecil ini di sini,

yang mengurangi saya ke iPhone 4 ukuran. Baik? Atau iPhone 4S. Sekarang aku tinggi dan kurus. Tapi Anda bisa mengklik bolak-balik dan memindahkan mereka kembali sebagainya. Dan aku hanya berusaha untuk membuat segalanya cocok di layar di sini. Baik. Jadi mari kita terjun langsung ke membangun pandangan kami di sini.

Apa pandangan kita akan menjadi hari ini adalah satu kartu dengan ace klub tertulis di atasnya. Baik? Itu akan menjadi itu. Dan aku akan dapat mengklik pada kartu dan itu akan terbalik, menunjukkan bagian belakang kartu, dan kemudian klik di atasnya lagi, itu akan membalik kembali untuk menunjukkan ace

klub lagi - bolak-balik, bolak-balik. Baik? Dan pekerjaan rumah Anda akan menjadi untuk membuatnya sehingga saat kartu membalik up itu tidak menunjukkan ace klub, itu menunjukkan kartu acak diambil dari dek. Baik? Itu akan menjadi seluruh pekerjaan rumah Anda itu karena pada hari Senin.

Baik. Jadi mari kita lakukan ini. Benar-benar sederhana. Kami pergi ke daerah ini di sini, perpustakaan objek ini. Baik? Itulah tombol ketiga di sini, menunjukkan perpustakaan objek. Dan ini adalah di mana semua benda kita. Jika Anda melihat di sini dan Anda tidak melihat benda-benda ini,

mungkin layak mengklik pada tampilan Anda. Kadang-kadang Xcode ingin tahu apa tujuan adalah bahwa Anda akan menarik hal-hal ke dalam. Jadi, jika Anda klik di atasnya, maka Anda akan melihat hal-hal ini. Dan kami hanya akan mengambil salah satu tombol ini di sini. Jadi aku akan memilih tombol ini dan tarik keluar.

Dan pemberitahuan, seperti yang saya tarik keluar, garis-garis biru kecil muncul - pedoman ini. Baik. Pedoman ini super penting. Mereka tampak seperti kenyamanan untuk membantu Anda meletakkannya tepat di tengah atau kanan di sudut kanan.

Dan mereka, tapi mereka benar-benar penting untuk memastikan bahwa semua hal dalam pandangan Anda adalah jenis, seperti, ruang standar terpisah, kan? Dan berbaris melawan tepi. Sehingga sebagai pengguna pergi dari satu aplikasi ke yang lain, hal semua akan dipisahkan oleh spasi diprediksi

dan semuanya akan konsisten. Ini benar-benar penting. Dan ada mekanisme - Anda dapat melihat switch ini di sini, menggunakan tata letak auto, yang diperkenalkan pada iOS 6 dan jauh lebih baik di iOS 7, terutama di Xcode - yang memungkinkan ketika user interface Anda mengubah ukuran,

seperti hal itu menjadi sebuah iPhone 4 untuk iPhone 5, atau berputar dari yang vertikal menjadi horisontal, atau itu pada iPad di ruang yang lebih besar. Untuk semua tombol dan segalanya untuk jenis bergerak ke posisi baru yang masuk akal atau setidaknya sebagian besar dari mereka, kan?

Dan kemudian mungkin Anda mungkin harus memindahkan beberapa dari mereka dengan tangan, tergantung pada apa yang terjadi. Tapi sebagian besar otomatis meletakkan keluar. Dan ini benar-benar penting karena aku perangkat yakin akan terus ukuran yang berbeda seperti baru, Anda tahu, perangkat keluar selama bertahun-tahun.

Jadi melakukan tata letak auto penting, dan pedoman biru adalah nomor satu yang paling penting hal untuk tata letak otomatis. Kita akan menutupi tata letak mobil di detail, dan ada banyak untuk itu. Semua tombol ini di sini harus dilakukan dengan tata letak auto.

Tapi mendapatkan pedoman tersebut biru, memastikan Anda drop hal dengan setidaknya satu pedoman biru di suatu tempat benar-benar penting untuk jenis membuat Anda pergi ke jalan yang benar dengan benar auto ditata UI. Jadi kita memiliki tombol ini di sini.

Tapi sebelum - dan tentu saja, kita bisa pergi ke sini untuk ini adalah atribut inspektur dan klik di atasnya. Dan kita akan melihat segala macam atribut. Bahkan, jika saya menyembunyikan ini, berton-ton dari atribut untuk tombol ini. Baik? Bukan hanya tombol itu sendiri,

namun sebenarnya superclass yang memiliki atribut. Kontrol adalah superclass-nya, dan kemudian lihat adalah superclass kontrol dan memiliki atribut. Baik. Jadi ini adalah inspektur tujuan berorientasi yang akan menampilkan semua atribut dari semua hal

melalui hirarki warisan. Dan apa yang terjadi di sini adalah kita benar-benar mengedit contoh dari tombol di sini. Jadi kita tidak - dan saya tahu di beberapa sistem Anda tata letak tombol, Anda mengatur ukuran, dan Anda mengatur atribut.

Dan kemudian, Anda tahu, di balik layar sekelompok kode yang dihasilkan untuk membuat tombol. Bukan itu yang kita lakukan di sini. Kami benar-benar mengedit benda hidup. Mereka pada dasarnya akan menjadi beku kering. Dan kemudian ketika aplikasi Anda berjalan, tambahkan air, mereka datang untuk hidup, oke,

dengan atribut mereka mengatur, dan semua ukuran dan posisi mereka, dan semua mereka informasi tata letak auto dalam objek. Baik? Jadi itu sedikit berbeda dari Anda mungkin digunakan dalam beberapa sistem lain. Jadi, sebelum kita mengedit atribut tombol ini, meskipun, mari kita mengubah latar belakang kami

karena ini adalah permainan kartu. Dan kebanyakan permainan kartu yang, seperti, merasa hijau, kan? Jadi mari kita membuat latar belakang kita menjadi lebih seperti hijau terasa. Jadi aku hanya akan klik pada latar belakang, yang merupakan pandangan ini di sini, dan Anda dapat melihat sifat-sifatnya. Jadi aku akan mengubah pasangan -

atau hanya salah satu dari sifat-sifatnya - yang merupakan latar belakang. Anda melihat latar belakang warna putih ini di sini? Jadi jika saya klik pada ini, saya memiliki beberapa warna baru digunakan. Saya memiliki semua jenis ini warna hitam dan putih. Dan saya juga memiliki lainnya. Dan aku membawa lain, membawa krayon, oke?

Hal ini juga membawa cara lain untuk memilih warna, tapi aku suka krayon. Baik? Dan di mana krayon saya? Mereka disana. Jadi mari kita memilih hijau, seperti, lumut adalah hijau baik. Semanggi. Aku jenis seperti lumut yang lebih baik.

Jadi itu semacam latar belakang permainan kartu. Dan hanya itu. Jadi kita sudah mengatur warna latar belakang dari pandangan kita. Baik? Dan semua pengaturan atribut seperti ini: Anda hanya mengatur dan melupakannya. Jadi mari kita kembali ke tombol dan sifat-sifatnya.

Baik. tombol Saya ingin terlihat seperti kartu. Nah, tombol di iOS 7 pada dasarnya terlihat banyak seperti hyperlink pada halaman web, seperti tombol yang tidak di sana. Baik? Itu tombol biru. Itu tidak benar-benar tepat untuk apa yang kita inginkan.

Kami ingin terlihat seperti kartu dengan rect bulat kecil dan latar belakang putih, kan? Dan saya ingin kembali kartu terlihat sama tetapi memiliki semacam desain di atasnya atau sesuatu seperti itu. Jadi cara saya akan melakukan yang aku akan untuk mengatur gambar latar belakang untuk tombol saya.

Baik? Sebuah gambar latar belakang yang seperti rect bulat. Jadi mari kita sedikit selain di sini dan berbicara tentang: Bagaimana kita mendapatkan gambar ke aplikasi kita? Baik. Kami ingin menggunakan gambar dalam aplikasi kita; itu sangat umum ingin menggunakan gambar dalam aplikasi grafis seperti pada ponsel.

Jadi bagaimana Anda melakukannya? Dan jawabannya adalah Anda pergi ke sini ke tempat ini disebut "Perpustakaan aset gambar" - aset images.xc atau aset Xcode. Dan Anda dapat melihat sudah ada pasangan slot untuk ikon di sini.

Mereka tidak diatur, tapi ini adalah ikon aplikasi. Dan juga Anda dapat memiliki gambar peluncuran yang akan muncul langsung ketika seseorang meluncurkan aplikasi Anda. Dan kemudian sebagai Anda menginisialisasi, memiliki belakang gambar peluncuran, dan kemudian akan menunjukkan Anda UI yang sebenarnya. Jadi itu semacam gambar peluncuran cepat.

Dan kita akan berbicara tentang hal ini pada hari Senin. Kami akan mengatur latar belakang aplikasi untuk Machismo sini. Tapi aku akan benar-benar menyeret dalam beberapa gambar lainnya. Jadi saya memiliki beberapa gambar di sini. Dan misalnya, saya punya logo Stanford ini di sini. Jadi aku akan menyeret bahwa logo Stanford

di karena saya ingin menggunakannya. Dan itu saja; Anda hanya tarik di sini. Ia mengatakan Stanford. Tetapi perhatikan bahwa jenis dari memiliki hal yang aneh ini di sini, 1X dan 2X. Kamu melihatnya?

Dan itu karena setiap gambar yang Anda akan menggunakan di iOS ingin memiliki versi resolusi normal yang terjadi yang akan digunakan seperti pada iPhone 4 - nonretina menampilkan dasarnya. Dan kemudian 2X, resolusi dua kali lebih tinggi - salah satu yang akan digunakan pada retina. Dan secara otomatis akan memilih yang benar,

tergantung pada apa yang Anda berjalan di. Baik? Anda tidak perlu melakukan apa-apa tentang hal itu. Tetapi Anda ingin memberikan-anak res tinggi. Dan ini yang res tinggi tidak hanya harus sama persis gambar, hanya, Anda tahu, membuat resolusi lebih tinggi. Mereka mungkin memungkinkan Anda untuk melakukan -

misalnya, di sini saya punya logo Stanford dengan pohon kecil. Lihat? Melihat pohon di sana? Jadi mungkin ini adalah resolusi terlalu rendah untuk benar-benar mendapatkan pohon tampan. Tapi saya bisa mendapatkan pohon di pada resolusi yang lebih tinggi,

jadi saya meletakkannya di sana. Jadi itu bukan yang umum bahwa dua yang akan benar-benar yang berbeda-cari tapi mereka bisa. Tentu diperbolehkan mereka bisa. Saya juga tidak ingin benar-benar menyebutnya "Stanford." Aku akan menggunakan ini sebagai kartu cadangan saya.

Alih-alih memiliki, Anda tahu, beberapa jenis desain, Aku akan memiliki logo Stanford menjadi belakang kartu saya. Ketika kartu saya membalik ke bawah dan saya melihat kembali, Aku akan melihat logo standar. Jadi aku akan menyebutnya "kartu kembali." Saya bisa menyebutnya apa pun yang saya inginkan.

Saya juga memiliki hal-hal untuk front sini. satu ini di sini. Ini adalah kartu kosong dengan sudut bulat. Itu ada. Anda tidak dapat melihatnya. Karena itu kartu putih sehingga Anda tidak dapat melihatnya.

Tapi aku akan menggunakannya. Aku akan menyebutnya "kartu depan." Dan aku juga akan memiliki versi high-res itu juga. Baik. Jadi itu bagus. Jadi sebanyak yang kita bisa melihat itu.

Baik. Jadi sekarang aku punya beberapa gambar. Dan sekarang saya ingin menggunakannya dalam pandangan saya. Aku agak ingin mengatur kartu ini untuk menggunakan ini. Jadi aku akan mulai dengan kartu saya di sini menjadi wajah ketika berjalan. Ketika aplikasi saya berjalan, kartu akan mulai menghadap ke atas.

Dalam aplikasi Anda ketika Anda mendapatkan pekerjaan Anda, Anda mungkin akan ingin memulainya telungkup. Alasan untuk itu adalah aplikasi saya hanya menunjukkan satu kartu: Ace klub. Jadi tidak apa-apa jika ia datang dengan ace klub. Tapi Anda tidak ingin kartu Anda untuk datang ace klub pasti.

Dan itu mungkin sedikit lebih banyak pekerjaan untuk Anda coding-bijaksana untuk menginisialisasi untuk datang dengan beberapa kartu acak. Jadi saya hanya akan memilikinya datang menghadap ke bawah. Membuatnya jauh lebih mudah pada Anda. Baik? Jadi bagaimana kita mengatur itu? Benar-benar sederhana.

Aku punya tombol yang dipilih di sini. Berikut sifat-sifatnya. Salah satu sifat-sifatnya adalah gambar latar belakang nya. Baik? Jadi aku hanya akan klik di sini, dan Anda dapat melihat bahwa semua gambar yang ada di perpustakaan aset saya akan berada di sini. Baik? Dan jika ada yang benar-benar banyak dari mereka,

Anda bisa mengetik dan akan mencocokkannya. Jadi aku akan membuatnya menjadi bagian depan kartu. Sehingga membuatnya depan kartu, tapi saya tidak melihat - mana rect bulat? Baik? Aku tidak bisa melihat rect bulat. Dan itu karena terlalu kecil

untuk melihat sudut-sudut bulat sangat baik di sini. Jadi Anda hanya dapat mengambil hal ini dan mengubah ukurannya. Baik? Dan aku akan membuatnya - Saya ingin menjadi sekitar dua sampai tiga [tidak terdengar]. Jadi aku akan membuatnya 64 oleh 96. Aku tahu ini terjadi menjadi ukuran yang sangat baik, dan saya sudah ukurannya.

Dan sekarang Anda bisa melihat sudut bulat kecil. Kamu melihat? Jadi ini adalah bahwa gambar yang saya diseret dengan tombol tertulis di atasnya. Dan tentu saja, aku pindah sedikit sehingga saya bisa menempatkannya kembali di tengah-tengah menggunakan pedoman biru saya, kan? Dan tentu saja, saya tidak ingin kartu saya untuk mengatakan "tombol" itu;

Saya ingin ace klub di sini. Jadi aku akan cukup klik dua kali di atasnya. Saya juga bisa mengedit yang di sini. Anda lihat di sini di mana dikatakan "tombol"? Klik di sini. Aku hanya akan klik dua kali-langsung di atasnya.

Aku akan mengetik "ace." Dan bagaimana cara mengetik klub, ada yang tahu? Alt sesuatu atau lainnya. Saya suka melakukan cara ini. Aku pergi untuk mengedit menu, karakter khusus, mendapatkan hal ajaib ini.

Anda pernah melihat ini, jenis dingin? Cukup klik ganda - menemukan klub dan double-klik. Baiklah. Jadi ada ace saya klub. Sekarang tetapi, Anda tahu, itu tidak benar, baik. Aku tidak benar-benar seperti itu A. biru saya benar-benar ingin A menjadi hitam.

Dan itu bisa menjadi sedikit lebih besar. Ada lebih banyak ruang untuk itu. Jadi aku bisa pergi di sini, misalnya, dan mengubah font. Saya bisa mengubahnya dengan mengklik hal kecil ini untuk membuatnya lebih besar, atau aku benar-benar dapat mengklik T ini dan bahkan set yang font yang itu. Satu hal yang benar-benar penting

di iOS 7 adalah tipografi. Baik? Memilih gaya teks yang tepat benar-benar, benar-benar penting dalam iOS 7. Dan kita tidak akan benar-benar berbicara tentang hal itu di sini; kami hanya akan menggunakan font sistem. Tapi itu sesuatu yang akan kita bicarakan di kuliah,

adalah memastikan Anda memilih font yang tepat di tempat yang tepat untuk membuat UI terlihat benar-benar baik. Aku dapat mengubah ukuran di sini, mungkin 24 titik atau semacam itu. Yang masih akan cocok. Dan kemudian aku tidak ingin biru ini, sehingga warna teks ini.

Jadi mari kita pergi ke depan dan membuat hitam itu. Baiklah. Jadi saya punya kartu mencari yang saya inginkan. Itu bagus. Semua sifat ini bahwa kita sedang menyiapkan, dengan cara, jika Anda melihat tombol di, Anda melihat konfigurasi negara ini di sini?

Default? Kami benar-benar dapat mengatur semua hal ini berbeda untuk negara disorot dari tombol, atau negara yang dipilih, atau negara penyandang cacat. Tapi kami sedang menyiapkan ini sebagai default. Jadi semua tombol kami selalu akan menjadi menampilkan keadaan default.

Baik? Jadi tombol yang cukup kuat. Anda dapat memiliki mereka terlihat berbeda karena mereka menyoroti atau apa pun, tapi kami akan bekerja semua dalam apa yang disebut "Normal" atau "default" keadaan tombol. Anda akan melihat bahwa ketika kita mendapatkan kode. Jadi kita benar-benar dapat menjalankan hak ini sekarang.

Jadi berjalan. Anda semua - paling, sekali lagi, dilakukan Xcode. Anda tahu bagaimana untuk menjalankan. Ini tombol putar kecil ini. Anda benar-benar dapat terus ke bawah, dan ada hal-hal lain yang dapat Anda lakukan seperti tes dan menganalisis.

Tapi kami hanya akan menjalankan. Jadi saya klik run, dan itu akan menjalankan ini di simulator. Baik? Dan ini dia. Dan Anda dapat melihat bahwa simulator begitu besar bahkan tidak muat di layar saya. Jadi saya semacam harus gulir di dalamnya.

Dan ketika saya klik, itu tidak melakukan apa-apa. Baik? Jadi itu tidak baik. Baiklah. Karena saya belum menempatkan kode apapun di controller saya untuk menanggapi untuk hal yang disentuh. Jadi itulah yang akan kita lakukan selanjutnya.

Jadi mari kita kembali ke sini dan berhenti. Baik. Jadi bagaimana kita melakukannya? Nah, itu cukup menarik bagaimana kita melakukan itu, benar-benar. Aku akan membuat beberapa ruang lagi di sini. Dan apa yang perlu kita lakukan adalah menghubungkan hingga controller kita. Dan kami melakukannya dengan menempatkan sisi kode controller kami

berdampingan dengan pandangan kami. Baiklah? Jadi aku akan klik tombol kecil ini di sini, ikon tombol ini, dan yang menempatkan berdampingan. Dan secara default jika Anda memiliki pandangan di sini di sebelah kiri, itu akan menempatkan kode yang kontroler di sebelah kanan.

Dan Anda dapat memindahkan ini untuk mendapatkan lebih banyak ruang untuk kode jika Anda ingin. Anda juga dapat beralih di antara header jika Anda ingin untuk melakukan hal-hal umum atau pelaksanaannya. Baik? Jadi itu bagus. Sekarang, kode ini di sini adalah bagian

dari controller tampilan siklus hidup, yang kita akan untuk berbicara tentang dalam dua atau tiga minggu. Tapi hari ini kita tidak akan berbicara tentang hal itu. Jadi kami hanya bisa menyingkirkannya. Dan mari kita mulai dengan mengatakan, "Ketika tombol ini akan menyentuh, kami ingin flip atas. "

Jadi kita perlu membuat sambungan antara pandangan kami dan controller. Dan kita akan melakukannya hal di mana kita menggantung target keluar dan menembak panah. Baik? Disebut "tindakan sasaran." Dan ini akan menjadi semacam bloon.

Anda bahkan mungkin tidak akan percaya ini ketika Anda melihatnya. Cara untuk melakukan ini adalah Anda tahan tombol kontrol. Jadi aku menekan tombol kontrol, dan aku menyeret baris dari pandangan langsung ke kode kita. Baiklah? Baik? Dan aku membiarkan pergi.

Dan mengatakan, "Oh, Anda ingin hubungan antara tampilan Anda dan controller Anda, kan? Inilah yang saya perlu tahu. " Jadi itu meminta kami, "Apa yang Anda ingin untuk memanggil hubungan ini? " Jadi ini akan menjadi nama metode.

Ini benar-benar akan membuat sebuah metode di sini yang dipanggil ketika tombol akan menyentuh. Aku akan menyebutnya "tombol kartu sentuh." Itu nama yang bagus. Berikut itu mengatakan, "Apa yang Anda ingin jenis argumen untuk menjadi? "

Kami akan membicarakannya nanti, tapi untuk saat ini kami jelas ingin argumen menjadi tombol yang mengirimkan tindakan ini, oke? Yang akan menjadi bagus karena kemudian kita akan untuk berbicara kembali ke sana dan mengatakan itu untuk flip itu sendiri lebih. Ada hal lain yang kami dapat mengatur di sini seperti:

Apa jenis acara yang Anda ingin mengirim tindakan ini? Dan Anda benar-benar dapat mengaturnya sehingga tidak ada argumen, itu hanya mengirimkan tombol kartu sentuh tanpa argumen. Tapi di sini kita ingin memiliki argumen pengirim, tombol mengirim pesan ini. Anda bahkan dapat mengirim acara sentuhan bersama,

tapi kami hampir tidak pernah melakukan itu - sepersepuluh persen dari waktu. Jadi di sini aku akan memiliki pengirim. Jadi ketika saya klik terhubung, menciptakan metode baru. Dan metode yang kabel hingga tombol itu. Bahkan, Anda melihat lingkaran bulat kecil ini? Jika saya mouse di atasnya, ia akan menampilkan itulah yang itu

terhubung dengan. Baik? Jadi ini hanya beberapa metode cukup normal-cari disini. Jenis kembali, tindakan IB, itu benar-benar batal typedef. Metode ini benar-benar kembali batal. Alasan bahwa Xcode menempatkan tindakan IB ada

dan tindakan IB typedef untuk membatalkan, itu hanya sehingga dapat memberitahu yang metode yang tindakan Target sehingga bisa melakukan hal-hal seperti ini. Baik? Mouse. Tapi compiler mengabaikan itu. Compiler melihatnya sebagai batal karena typedef untuk membatalkan.

Ini murni hal Xcode untuk ini IB tindakan hal. Dan kemudian Anda dapat melihat metode ini memiliki satu argumen, yang merupakan pengirim. Itu tombol mengirimkan pesan ini. Dan itu akan mengirim pesan ini setiap kali sentuhan pergi di dalam tombol.

Sentuh di dalam, kan? Itu acara. Jadi itulah ketika itu akan mengirim pesan ini. Jadi yang sempurna. Itulah yang kami inginkan. Jadi setiap kali hal ini terjadi, apa yang kita ingin lakukan?

Nah, kami ingin membalik kartu itu. Baik. Jadi mari kita mulai dengan hanya membalik ke belakang. Dan cara kita akan melakukannya adalah kita akan untuk membuat sebuah variabel lokal yang disebut "gambar kartu." Baik. Dan Anda melihat itu berusaha untuk membantu saya mengetik di sana, dan Anda akan melihat banyak membantu di sini.

Dan UI gambar kelas lain di iOS, oke, seperti tombol UI adalah sebuah kelas. UI gambar kelas, karena Anda bisa bayangkan, menyimpan gambar. Bisa menjadi gambar JPEG, bisa menjadi sebuah animasi GIF, itu bisa menjadi gambar TIFF, apa pun. Baik? Jadi itu sangat kuat kelas holding gambar.

Dan memiliki metode kelas yang disebut "image bernama," dan Anda memberikan string seperti depan kartu atau kartu kembali, kan? Dan akan terlihat di perpustakaan aset dan memberikan gambar dari resolusi yang tepat, tergantung pada apakah itu akan menjadi pergi - sebenarnya, itu akan memberi Anda sebuah gambar dengan kedua resolusi.

Dan kemudian tergantung di mana Anda menampilkannya, akan, kau tahu, memilih resolusi yang tepat, apakah itu pada retina atau tidak. Jadi itu keren. Kami mendapat gambar. Jadi sekarang kita hanya akan memberitahu tombol untuk mengatur ini sebagai gambar latar belakang yang bukan apa di atasnya sekarang.

Jadi untuk berbicara dengan tombol, kita lakukan membuka pengirim braket persegi. Kanan? Anda melihat bahwa pengirim adalah tombol mengirimkan pesan ini. Baik? Set. Oke, saya akan mulai mengetik set latar belakang. Dan Anda melihat saat aku mulai mengetik, Xcode yang menyarankan

untuk apa yang saya mungkin ingin. Sekarang, ia tahu bahwa pengirim adalah tombol UI, sehingga hanya menyarankan tombol metode di sini bahwa mulai dengan set B - mengatur warna latar belakang, mengatur gambar latar belakang, dan menetapkan batas. Baik? Perhatikan Saya juga mendapatkan beberapa bantuan di bagian bawah.

Lihat, bukankah itu keren? Sedikit satu atau dua baris bantuan? Dan aku bisa klik link ini dan itu akan membawa saya ke dokumentasi. Kami tidak akan melakukan itu karena alasan waktu. Tapi saya juga bisa klik satu dan itu mengambil salah satu yang

dan segera memilih argumen pertama. Jadi saya bisa mengambil. Baik? Jadi saya akan melakukan itu. gambar kartu. Dan perhatikan di sini ketika saya ketik CA, ada banyak hal yang mulai dengan CA yang bisa pergi ke sana.

Tapi Xcode ini cukup cerdas. Ia tahu bahwa variabel lokal jauh lebih mungkin apa yang Anda ingin di sini daripada semua CA lainnya - fungsi yang dimulai dengan CA. Jadi secara otomatis memilih itu untuk saya. Dan jika aku memukul tab, dengan cara,

itu akan pada dasarnya melarikan diri lengkap itu. [Tidak terdengar] Dan jika aku memukul tab lain, ia pergi ke sini. Ini sedikit hal empat negara hanya apa yang saya bicarakan tentang di mana Anda dapat mengatur ini untuk negara yang disorot, atau yang dipilih negara, atau negara penyandang cacat. Kami hanya akan melakukan normal

atau standar negara dari tombol ini. Baik? Jadi kita sedang menyiapkan gambar latar belakang untuk tombol ini. Dan kami juga perlu mengatur judul karena kita tidak ingin untuk melihat bahwa ace klub ketika kita flip itu ke belakang. Jadi aku hanya akan mengaturnya untuk itu.

Baik. Itulah string kosong. Saya juga bisa mengatakan nihil ada. Baik. Tapi aku mengatakan string kosong hanya untuk melihat apa yang string kosong seperti. Jadi sebenarnya jika kita menjalankan ini, perintah tiga. Oke, mari kita coba itu.

Oh keren. [Tidak terdengar] Jadi di sana Anda pergi. Jadi ada versi miniatur itu. Baik. Jadi, inilah kartu kami. Dan jika saya klik di atasnya, oh ya, itu membalik. Iya nih. logo Stanford dengan pohon. Tapi jika saya klik, tidak melakukan apa-apa lagi;

selalu membalik ke belakang, yang persis apa kode kita tidak, kan? Jadi itu bagus. Jadi mari kita memperbaikinya sehingga membalik kedua cara. Baik? Dan aku akan melakukan itu dengan mengatakan jika - sebenarnya, aku akan melakukan satu hal lain dulu

untuk membuat kode ini sedikit lebih sederhana adalah bukan memiliki variabel lokal ini, saya hanya bisa mengambil ini dan pop itu tepat di sana. Baik? Dan itu sangat umum untuk melakukan itu. Dan jika saya ingin membungkusnya, maka secara otomatis akan membungkus jika saya membuat ini terlalu pendek.

Tapi saya juga dapat menempatkan kembali di sana. Dan ketika saya lakukan, melihat apa yang dilakukannya dengan titik dua. Melihat bagaimana garis titik dua up? Ini akan selalu melakukan itu. Jika Anda menekan kembali di tengah-tengah pesan send yang memiliki beberapa argumen, maka akan garis titik dua

untuk semua argumen. Benar-benar keren. Sehingga Anda dapat melihat semua argumen berbaris kiri dan kanan. Jadi, aku akan memeriksa untuk melihat apakah judul saat ini - Oke, itu adalah metode tombol - jika itu string. Jika panjang itu, oke, adalah nol, oke -

jadi itu pengujian sana untuk melihat apakah panjang dari nol - itu cara yang keren untuk melakukannya karena yang akan bekerja jika judul tombol adalah nihil atau itu jika string kosong. Karena judul tombol dimulai nihil. Jika Anda tidak menetapkan untuk apa-apa, itu dimulai nihil. Jadi di sini dengan satu baris kode Aku sudah memeriksa kedua awal

negara mungkin - tidak dalam kasus kami karena kami menetapkan judul ke klub A - tetapi dalam kasus Anda mungkin. Kemudian kami akan mengaturnya untuk satu hal, lain kami akan mengaturnya untuk hal lain. Jadi kami hanya ingin mengatur ini untuk ini. Baiklah?

Jadi jika ada judul pada tombol, dengan kata lain memiliki ace klub, maka kita akan untuk beralih ke belakang. Dan jika tidak ada judul pada tombol, maka kita akan untuk beralih kembali ke depan. Baik? Ace klub.

Baik? Jadi sekarang ketika kita menjalankan, kartu kami akan membalik kedua cara. Baik? Jadi benar-benar sederhana untuk kawat hal ke controller untuk melakukan apa yang Anda inginkan. Hal berikutnya kita akan lakukan adalah dalam - Oke, saya akan menunjukkan Anda benar-benar cepat di sini. Jika Anda menekan tombol pilihan, kunci yang sangat penting,

Anda melihat bagaimana menempatkan tanda tanya dan mulai menyoroti hal-hal? Itu akan memungkinkan Anda untuk transisi ke dokumentasi. Jadi jika saya ingin tahu lebih banyak tentang judul saat ini, jika aku memukul pilihan, klik di atasnya -

lihat, saya mendapatkan sedikit bantuan di sini. Ini properti. Ini read-only, itu nonatomic. By the way, jika Anda melihat "mempertahankan" dalam dokumentasi, itu sama dengan "kuat." Baik? Mempertahankan sama kuat dasarnya.

Sedikit deskripsi di sini tetapi juga hyperlink. Dan jika saya klik pada salah satu link tersebut, seperti ini, dibutuhkan saya ke dokumentasi. Ini adalah jendela terpisah di sini. Dan Anda dapat menavigasi di dalam dokumentasi ini. Anda benar-benar ingin mendapatkan akrab dengan semua ini.

Aku tidak bisa benar-benar menunjukkan semuanya kepada Anda hari ini untuk kendala waktu, tetapi Anda dapat melakukan hal-hal seperti pencarian, seperti saya bisa pergi mencari tombol UI di sini. Baik. Ada tombol UI. Aku mungkin gulir ke bawah dan pergi ke, misalnya, background image set atau mengatur latar belakang gambar

bagi negara, yang kita hanya melihat. Mungkin aku akan klik untuk pergi gambar UI. Anda melihat semua ini. Ada deskripsi bagus dari kelas di awal dan kemudian semua metode, dll, dll Jadi pasti ingin untuk menjadi master dari dokumentasi yang.

Anda juga dapat option klik dua kali pada hal-hal dan itu akan mengirimkan langsung ke dokumentasi. Jika Anda tidak ingin mendapatkan sedikit bantuan yang pertama, Anda bisa langsung di. Jadi pilihan adalah salah satu kunci untuk itu. Mari kita pergi ke depan - baik-baik saja.

Perhatikan bahwa ruang kecil ini sepanjang bagian bawah sini muncul ketika kami berlari aplikasi - Anda lihat itu? Ini adalah debugger di sebelah kiri, dan ini adalah konsol di sebelah kanan. Baik? Dan Anda pasti akan menggunakan debugger dan konsol kedua di kelas ini.

Dan sebenarnya, aku mungkin punya waktu untuk melakukan cepat - menunjukkan cara untuk melakukan konsol. Tapi bagaimanapun, Anda dapat menyembunyikannya dengan menyeretnya ke bawah atau juga dengan mengklik hal ini [tidak terdengar]. Baiklah. Jadi hal berikutnya kita akan lakukan adalah kita akan

untuk menempatkan label kecil di UI kami yang menghitung membalik. Baik? Hal inkremental kecil yang akan menambahkan setiap kali ada flip. Dan kami melakukannya dengan kembali ke sini dan meraih diri kita sendiri label. Jadi label adalah bagian read-only teks, teks noneditable.

Dan aku hanya akan tarik ke sini dan meletakkannya di kiri bawah. Aku akan double-klik di atasnya untuk menyebutnya "membalik usus nol." Ini adalah apa yang saya ingin terlihat seperti ketika UI pertama saya meluncurkan. Sekarang di sini, aku tidak pernah akan mengetuk ini dan menyebabkan pesan yang akan dikirim seperti tombol;

itu sebaliknya. controller saya ingin berbicara dengan ini dan kirim ketika membalik perubahan sepanjang waktu. Baik? Jadi Anda mungkin berpikir bahwa Anda akan menyeret dari kode Anda ke ini membalik, tapi sayangnya Anda tidak melakukan itu. Anda masih tahan kontrol dan tarik dari sini.

Tapi bukannya menyeretnya ke dalam wilayah implementasi Anda, Anda tarik ke daerah antarmuka karena Anda akan membuat properti yang menghubungkan untuk label yang pada dasarnya. Jadi kami melakukan itu. Kami mendapatkan hal di sini.

Ini meminta kita sedikit pertanyaan yang berbeda: "Apa nama properti ini?" Aku akan menyebutnya "membalik label." Baik? Perhatikan bahwa properti ini lemah. Baik? Ketika saya klik connect, itu akan membuat properti di sini dan itu akan menjadi lemah.

Ini adalah pertama kalinya kami melihat lemah dibandingkan yang kuat. Alasan ini lemah adalah karena label ini diadakan kuat oleh pandangan sendiri. Jadi kita tidak perlu memiliki pointer yang kuat untuk itu, untuk tetap dalam tumpukan. Pandangan akan.

Dan jika label ini pernah meninggalkan pandangan, itu akan membersihkan keluar dari tumpukan. Dan properti ini - pointer ini untuk itu - akan mendapatkan nil, yang persis apa yang kita inginkan. Karena jika yang membalik label tidak dalam tampilan, kita tidak ingin menjadi memperbarui dan mengirim pesan untuk itu.

Jadi itu adalah penggunaan besar lemah di sini. Ini adalah properti yang normal bahwa Anda digunakan untuk kecuali untuk mungkin gerai IB ini. Itu hanya seperti tindakan IB. Ini hal yang berarti compiler mengabaikan yang Xcode menggunakan.

Baik? Sehingga bisa melakukan hal ini - menunjukkan apa yang terhubung ketika Anda mouse di atasnya. Baik? By the way, Anda dapat melihat semua koneksi dengan juga mengklik kanan pada hal. Jadi di sini saya hanya mengklik kanan pada tombol dan Anda dapat melihat koneksi nya.

Jika Anda pernah ingin mengubah nama - seperti jika saya tidak suka tombol kartu sentuh, saya ingin mengubah nama itu untuk sesuatu, Anda tidak bisa hanya mengubah nama sayangnya. Anda harus pergi di sini, klik kanan, menggunakan hal kecil ini untuk memutuskan itu, dan kemudian mengontrol tarik lagi.

Baik? Semua orang punya itu? Itu disayangkan. Ini akan sangat baik jika Xcode bisa melacak untuk Anda tapi tidak bisa. Jadi, jika Anda pernah ingin mengubah nama sesuatu, Anda harus memutuskan di sini dengan mengklik kanan di atasnya,

dan kemudian mengendalikan tarik yang baru dan menetapkan nama jalan itu. Anda juga dapat klik kanan pada orang kecil ini dan ia akan menampilkan semua koneksi untuk controller. Membawa up window ini. Dan aku bisa melihat label. Kamu melihat? Aku mengarahkan mouse tombol.

Label. Ada juga properti kecil di sini, yang merupakan sesuatu yang Anda belum melihat, yang pada dasarnya adalah properti yang menunjuk ke seluruh pemandangan dari controller. Jadi ini adalah koneksi untuk pengendali Anda. Lihat, ia mengatakan "permainan kartu controller pandangan"?

Baik? Jadi itulah mengklik kanan. Saya mengklik kanan di sini. Baiklah. Jadi bagaimana kita akan membuat ini membalik pekerjaan label? Kita akan menyisihkannya untuk kedua. Mari kita tidak berpikir tentang hal itu.

Mari kita bukannya melakukan properti lain. Milik. Yang nonatomic, yang hanya akan menjadi int, yang aku akan memanggil "count sandal." Baik? Jadi sandal count hanya sebuah integer yang akan untuk menjaga hitungan membalik. Dan menonton ini.

Beberapa lebih banyak ruang di sini. Pergi kesana. Aku hanya akan pergi ke sini dan mengatakan jumlah self.flip plus plus. Baik? Sekarang, apakah itu memanggil setter atau getter untuk flip menghitung? Kedua. Persis.

Yang memanggil kedua setter dan getter. Itu memanggil getter untuk mendapatkan hitungan lain, maka itu ditambah plussing itu; dan kemudian memanggil setter untuk mengatur kembali. Baik. Jadi itu semacam lapisan yang funky kode di sana. Itu sama dengan mengatakan jumlah self.flip sama self.flip

menghitung ditambah satu. Jadi itu memanggil getter dan setter. Baik. Jadi sekarang kita punya hitung sandal bagus ini. Ini melacak hitungan; bagaimana kita hook yang sampai untuk hal ini di sini? Yang aku akan membuat sedikit lebih besar, dengan cara.

Baik. Bagaimana kita hook yang sampai jadi yang mengatakan membalik usus satu, membalik usus dua, membalik usus tiga? Nah, kita akan melakukannya dengan menggunakan setter untuk flip count. Baik? Jadi biasanya setter untuk flip count akan terlihat seperti ini. Baik? Dan inilah penggunaan besar lain setter dan getter, yang menjaga UI sinkron dengan properti.

Dan aku hanya akan melakukan ini dengan mengatakan self.flips label - membalik label.text sama - oops, maaf. Sulit untuk mengetik berdiri. Sama NS string, string dengan format yang, yang telah Anda lihat sebelumnya, membalik usus persen count D self.flip. Baik? Jadi sekarang setiap kali hitungan flip berubah kita akan

untuk memperbarui UI. Masuk akal? Pertanyaan tentang itu? Baik. Jadi mari kita jalankan. Baik. Berikut hal kami. Jadi klik, membalik, update count sandal.

Flip, flip, flip, sandal. Bolak-balik bekerja, dan jumlah flip melacak berapa banyak membalik kita lakukan. Baik? Sehingga Anda dapat melihat hal ini benar-benar sederhana untuk kawat. Baik? Dan, Anda tahu, ketika Anda mendapatkan ke dalam gedung bahkan aplikasi rumit,

karena Anda akan selalu menggunakan mekanisme yang sama dengan tindakan target dan outlet dan Anda akan menjadi menggunakan setter dan getter untuk menjaga hal-hal di sync, itu akan menjadi mudah bagi orang untuk memahami bagaimana kode Anda bekerja. Mereka tahu di mana mencarinya untuk melihat di mana memperbarui UI terjadi,

dll Aku akan melakukan satu hal lain di sini. Luangkan waktu sebentar dan menampilkan NS log. Baik. Saya mengatakan kepada Anda bahwa Anda bisa login sesuatu di konsol. Jadi mari kita lakukan setiap kali hal ini perubahan, mari kita melakukan log NS. Jadi itu hanya fungsi C.

Dan Anda memberikan format string seperti printf. Jadi saya akan mengatakan jumlah sandal sama persen count V self.flip. Baik? Jadi Anda hanya menempatkan bahwa NS log di sana, dan sekarang ketika kita menjalankan Anda akan melihatnya di konsol. Itu akan datang ketika saya klik, dan itu akan untuk mengatakan apa yang terjadi di sini.

By the way, tentu saja, saya bisa membuat yang lebih luas. Dan kembali ke simulator. Ayo lihat. Baik. Jadi NS logging - cara yang mengagumkan untuk debug. Baik? Terkadang banyak lebih mudah daripada pengaturan breakpoint dan kemudian ketika Anda sampai di sana melihat

di variabel dan barang-barang. Itu hanya mencetak apa yang terjadi dan Anda dapat melihatnya. Terutama di UI hal-hal yang kadang-kadang animasi, mereka terjadi dari waktu ke waktu. Kadang-kadang sulit untuk mengatur breakpoint di tengah dari animasi untuk melihat apa yang terjadi.

Tapi jika Anda melakukan beberapa log NS, Anda jenis bisa dari melihat bagaimana hal kemajuan. Baiklah. Hal terakhir yang saya akan menunjukkan kepada Anda di sini adalah bagaimana untuk menambah kelas baru untuk aplikasi Anda karena Anda akan perlu untuk melakukan itu.

Anda akan menambahkan empat kelas untuk ini. Baik? Anda akan mulai dengan ini, oke, dan kemudian Anda akan menambahkan empat kelas - kartu, dek, dll Dan cara Anda menambahkan kelas adalah Anda - dan pada kenyataannya, cara Anda menambahkan file ke proyek Anda - adalah Anda pergi ke menu file, file baru.

Baik? Dan ada semua jenis hal yang dapat Anda tambahkan di sini, file database, file skema dan segalanya. Tetapi Anda ingin satu kelas Objective-C top-kiri ini. Baik? Di sini Anda hanya akan ketik nama kelas. Jadi misalnya, jika saya akan menambahkan kartu

dan nama supernya. Baik. Jika Anda melakukan kartu bermain, Anda dapat mengetik kartu sini. Ini tidak harus menjadi sesuatu yang dipilih dari daftar ini, Oke, yang adalah orang-orang iOS. Jadi di sini saya akan membuat kartu. Aku bisa meletakkan kartu di sini.

Ini bertanya di mana untuk menyimpan ini. Aku bisa meletakkannya tepat di tempat yang sama yang saya kontroler permainan kartu adalah, Anda lihat? Tapi aku benar-benar penggemar menempatkan model Anda di direktori sendiri. Jadi Anda akan menggunakan folder baru di sini.

Mari kita buat seperti model direktori, dan yang menciptakan direktori Model sini. Ada controller, inilah direktori Model. Dan buat. Sehingga akan membuat kartu dot H dan M. Ini kartu dot H dan M, oke, versi jenis kosong dari mereka.

Anda dapat beralih bolak-balik antara mereka di sini. Perhatikan bahwa jika saya beralih kiri, perubahan yang tepat untuk mencocokkan. Kamu melihat? Mengubah ini, ini cocok. Itu karena aku telah rekan-rekan memilih di sini. Jika Anda pergi ke manual dan memilih file ini secara manual,

maka tidak akan melakukan sihir itu lagi. Tapi Anda selalu dapat kembali dengan rekan-rekan dan itu akan menjaga mereka dalam sync. Baik. Sehingga Anda dapat memiliki - beberapa orang seperti file header mereka di sebelah kiri, beberapa di sebelah kanan, apa pun. Juga, perhatikan di sini akan menyenangkan

kalau bisa juga kelompok hal ini di navigator. Dan aku bisa dengan meminta mereka dipilih klik kanan grup baru. Katakanlah Model. Disini. Dan sekarang aku telah menempatkan model saya di tempat kecil sendiri di sini. Aku bahkan bisa bergerak ini, meletakkannya di sini, apa pun.

Saya bisa menaruh semua empat kelas saya di sana. Hal ini dimungkinkan untuk menghubungkan kelompok ini untuk sistem file. Bahkan, jika Anda klik pada file dan membawa inspektur di atasnya di sini, Anda dapat melihat bahwa itu punya lokasi ini di mana Anda dapat menentukan apakah itu path absolut, atau relevan dengan kelompok itu di, atau apa pun.

Jadi Anda dapat mengontrol itu. Dan hanya itu. Jadi saya pikir itu semua yang perlu Anda melakukan pekerjaan rumah Anda. Anda hanya akan ketik semua kode Anda di sini untuk kartu dan menambahkan tiga orang yang Anda lainnya. Ketik semua kode di.

Dan kemudian semua Anda harus lakukan adalah membuat kartu yang bukan menunjukkan ace klub sepanjang waktu, perlu pergi melalui dek, oke? Ada PR rinci menulis up diposting. Ia memiliki semua jenis petunjuk dan bantuan, dan memberitahu Anda tentang apa tugas-tugas yang diperlukan adalah,

dan kriteria evaluasi, dan semua itu. Jadi pasti membaca bahwa hal secara detail, oke? Jangan melewatkan hal itu dan hanya mencoba untuk pergi langsung ke melakukannya. Dan jika Anda memiliki pertanyaan, saya akan berada di sini. Itu dia. >> Untuk lebih lanjut, silahkan kunjungi kami di Stanford.edu.



Video Description

This is the second lecture of the course as it was published by Stanford University. It has Creative Commons rights.