[Powered by Google Translate] [Seminar] [IOS: Penulisan Apps Seperti Boss]
[Tommy MacWilliam] [Universiti Harvard]
[Ini adalah CS50.] [CS50.TV]
>> Baiklah, semua orang, dialu-alukan untuk IOS: Penulisan Apps seperti Boss.
Seminar ini akan memberi tumpuan kepada menulis aplikasi untuk iPhone
dan seterusnya menulis aplikasi untuk iPad, dan sebagainya kita pada dasarnya akan berjalan melalui
beberapa contoh yang berbeza bagaimana untuk membuat aplikasi, permainan yang mudah seperti Tic Tac Toe,
atau jika anda lebih berminat dalam membuat aplikasi seperti beberapa jenis pembaca berita
atau sesuatu yang berinteraksi dengan Internet saya akan bercakap tentang itu juga.
Berikut adalah agenda ringkas kami.
>> Aplikasi IOS ditulis dalam bahasa yang dipanggil Objektif-C,
dan sebagainya ini adalah sedikit serupa dengan C tetapi tidak benar-benar di semua,
jadi kita akan bercakap sedikit tentang bahasa sendiri
dan kemudian bagaimana untuk membina aplikasi bawah menggunakan aplikasi program ini dipanggil XCode,
yang jika anda telah tidak dimuat turun lagi berasa bebas untuk memulakan muat turun sekarang.
Ia adalah beberapa gigabait.
Ia harus menjadi percuma di App Store, jadi anda perlu untuk mempunyai Mac
ideal menjalankan versi terbaru OS X.
Jika anda tidak, tiada masalah.
Kami mempunyai Mac di pusat sains tersedia untuk kegunaan anda
dengan XCode dipasang, dan jadi berasa bebas untuk menggunakan mereka untuk pembangunan.
Jika anda mahu membuat app tetapi tidak mempunyai Mac, jangan bimbang.
Terdapat banyak sumber kampus untuk itu.
Dan sebagainya maka kita pergi untuk menampung 2 besar contoh aplikasi yang berbeza anda boleh membuat.
Objektif-C adalah teknikal apa yang dipanggil satu set super C.
Ini bermakna bahawa mana-mana kod C juga sah Objektif-C kod.
Itu bermakna bahawa kita jenis saluran yang dirakam pada beberapa ciri-ciri tambahan kepada C.
Sebahagian daripada ciri-ciri ini termasuk tidak mempunyai pernah menulis malloc lagi, Alhamdulillah,
tidak perlu bimbang tentang mereka petunjuk bodoh dan membebaskan mereka dan semua barangan itu
anda membenci tentang C, dan ia jenis pergi dalam Objektif-C-.
>> Sekarang, Objektif-C juga mempunyai standard perpustakaan yang lebih besar,
jadi ada fungsi yang lebih banyak anda mendapat untuk bahagian percuma Objektif-C.
Ingat apabila kita telah menulis PHP kita menyedari bahawa kita pergi dari
bahasa yang terkecil kepada perpustakaan gergasi semua perkara-perkara gila yang boleh anda lakukan.
Perkara yang sama berlaku dalam IOS.
Ada objek untuk perkara-perkara seperti kalendar Buddha, dan benar-benar apa-apa
anda mungkin boleh berfikir mungkin wujud sudah dalam pelaksanaan Objektif-C.
Bahagian objektif Objektif-C rujukan sesuatu
dipanggil Pengaturcaraan Berorientasikan Objek.
Ini adalah jenis konsep baru, tetapi kita telah sebenarnya kebanyakannya belajar
banyak konsep-konsep ini sudah.
Idea di sebalik Pengaturcaraan Berorientasikan Objek adalah bahawa anda akan menstrukturkan
banyak kod anda di sekitar perkara-perkara yang dipanggil kelas,
dan kelas ini benar-benar dimuliakan structs.
Dalam struct satu kita pada dasarnya di sini adalah perkara,
dan perkara ini boleh mempunyai ahli-ahli.
Sebagai contoh, nod dalam senarai dikaitkan boleh mempunyai perkara-perkara lain
seperti nilai, penunjuk kepada nod seterusnya dalam senarai,
dan bersama-sama bahawa penunjuk dan nilai yang terdiri ini contoh salah satu daripada struct satu.
Kelas adalah sangat serupa kecuali
kelas juga boleh mempunyai fungsi di dalam mereka.
Apabila kita mengisytiharkan struct, kita hanya boleh mengatakan n int atau nod * seterusnya.
>> Kini dengan C-Objektif kita sebenarnya boleh meletakkan fungsi
di dalam perkara-perkara.
Satu lagi perkara yang kelas boleh lakukan ialah mereka boleh mewarisi data dari kelas lain.
Sebagai contoh, kita akan melihat sekumpulan terbina dalam kelas Objektif-C.
Salah seorang daripada mereka boleh menjadi kelas yang mewakili pandangan untuk skrin,
dan sebagainya dengan mengatakan saya mahu melaksanakan pandangan saya sendiri
kita pada dasarnya mengatakan seseorang lebih di Apple, orang mungkin benar-benar bagus,
menulis ini kelas bagi saya, dan ia mengendalikan perkara-perkara seperti memaparkan butang
atau menjadikan skrin, dan kita akan benar-benar yg menderita
untuk melaksanakan semua bahawa fungsi diri, dan sebagainya dengan hanya
mewarisi data kita boleh mengatakan segala-galanya yang anda lakukan dalam kelas itu
Saya juga mahu di dalam kelas saya, dan kemudian saya akan melakukan beberapa barangan lain,
iaitu melaksanakan app.
Itulah apa yang pewarisan perkataan bermakna. Kita akan lihat satu contoh yang lebih konkrit.
>> Dan akhirnya, kunci dengan Pengaturcaraan Berorientasikan Objek adalah bahawa
ia membawa kepada pengkapsulan data.
Dalam beberapa masalah kami set kita boleh mempunyai ini besar, pembolehubah global
dan globals di mana-mana, dan itulah bagaimana kita hendak menjejaki negeri.
Dengan kelas kita boleh mula encapsulating maklumat di dalam sesuatu objek.
Jika kita mempunyai satu skrin pada aplikasi kita, kita tidak benar-benar memerlukan untuk mempunyai apa-apa data dari
satu lagi skrin di dalam aplikasi kami bahawa,
dan sebagainya dengan encapsulating perkara dalam kelas ini sebenarnya membawa
kod rekabentuk yang lebih baik, dan ini boleh dilakukan dengan beberapa ciri-ciri tambahan
Objektif-C.
Amaran, sintaks untuk Objektif-C adalah pisang.
Ia adalah seperti apa-apa yang kita telah melihat sebelum ini,
jadi ia adalah sedikit lengkung pembelajaran mendapat digunakan untuk
apa yang palang pintu itu adakah ini bermakna?
Tetapi apabila anda mendapat lalu bahawa pembelajaran keluk awal ia adalah benar-benar, benar-benar licin
untuk mula menulis aplikasi.
>> Untuk mengisytiharkan kelas, katakan di sini adalah kelas saya, ia wujud,
dan mungkin di sini adalah beberapa perkara yang saya akan untuk menentukan kemudian,
Saya akan mengatakan muka @.
Saya akan mengatakan muka @. Saya akan memberi nama kelas saya.
Dan kemudian di tempat lain saya akan mengatakan @ akhir,
dan segala-galanya di antara muka _AT_ dan akhir @
akan menjadi kelas saya.
Itu akan menjadi apa yang di dalam h fail kami.
Sama seperti dalam C h fail. Kami pada dasarnya berkata di sini adalah beberapa perkara yang akan wujud.
Saya tidak semestinya memberitahu anda apa yang mereka lakukan lagi,
tetapi pengkompil perlu tahu bahawa mereka wujud.
Kemudian dalam m kami. Fail kerana m untuk Objektif-C
di mana kita sebenarnya akan menentukan apa kelas ini lakukan.
Sama seperti c fail. Kami, kami menyediakan pelaksanaan bagi fungsi.
Di dalam fail kami. M kita hendak katakan di sini adalah apa yang semua fungsi
di dalam kelas saya apa yang mereka semua lakukan.
Dan akhirnya, di dalam struct satu kita boleh mengatakan di dalam orang-orang pendakap kerinting
int n atau nod * seterusnya,
dan dalam C-Objektif kita akan menggunakan kata kunci @ harta,
dan ini adalah apa yang berlaku untuk menentukan sifat-sifat,
atau fungsi bukan yang merupakan sebahagian daripada kelas saya.
>> Memanggil fungsi dalam Objektif-C juga pisang.
Apabila kita mengisytiharkan fungsi dalam C kita berkata sesuatu seperti int foo
dan terbuka paren dan kemudian memberikannya satu senarai hujah.
Ini adalah apa yang mengisytiharkan kaedah atau fungsi kelihatan seperti dalam C-Objektif.
Jika saya ingin mengisytiharkan fungsi atau kaedah
di mana saya cakapkan kaedah adalah benar-benar hanya fungsi itulah ahli kelas,
jadi jenis ditukar, tetapi tidak benar-benar,
begitu dalam kaedah saya, saya mahu mencipta satu kaedah baru.
Ia akan kembali apa-apa, jadi ia akan menjadi tidak sah jenis.
Ini adalah jenis pulangan fungsi saya.
Sekarang kita mempunyai parens di sini kerana saya tidak tahu.
Seterusnya akan menjadi nama fungsi saya,
dan akhirnya kita mempunyai koma bernoktah sama seperti kita mempunyai dalam C.
Apa yang baru di sini adalah lelaki ini di sini.
Sempang ini sebenarnya adalah perlu, dan apa yang ini mengatakan adalah bahawa
kaedah ini di sini mesti dipanggil pada contoh kelas.
>> Selepas kita mengisytiharkan structs kami, kita mungkin berkata sesuatu seperti
n struct nod, dan yang sebenarnya dicipta
atau instantiated salah mereka structs supaya saya sebenarnya boleh mula bekerja
dengan apa yang di dalamnya, jadi melontarkan ini bermakna bahawa kita perlu
instantiate kelas hanya seperti kita instantiated bahawa struct
sebelum kita boleh memanggil kaedah ini di atasnya.
Jika saya mahu mula menambah hujah untuk kaedah saya
ia mendapat lebih pisang.
Berikut adalah nama kaedah saya.
Kemudian saya akan mempunyai kolon, dan selepas koma ini ia mengatakan di sini datang beberapa hujah.
Kaedah ini mengambil satu hujah.
Jenis hujah adalah int, dan nama hujah bahawa
atau pembolehubah bahawa saya akan mula menggunakan dalam kaedah dipanggil i.
Sekali lagi, ini adalah kaedah. Ia mengambil masa satu hujah.
>> Jika anda ingin mula menambah hujah-hujah yang lebih ia mendapat lebih pisang
bahawa kita telah kolon ini yang mengatakan di sini datang senarai saya hujah.
Hujah pertama ialah integer.
Sekarang, ini hujah kedua yang menarik.
Pembolehubah bahawa saya akan menggunakan dalam fungsi saya
dipanggil f, jadi dalam fungsi saya, saya boleh mengatakan
f + = 1 atau sesuatu.
Ini perkara di sini pada asasnya utama bagi hujah atau parameter.
Sama seperti kita mempunyai pasangan nilai utama dan sesuatu seperti JSON atau array bersekutu
Objektif-C membuat keputusan untuk mengatakan, okay, hanya supaya ia benar-benar jelas
apabila anda memanggil satu kaedah apa semua parameter ini adalah
Saya sebenarnya pergi untuk menamakan mereka semua.
Apabila anda memanggil kaedah, anda sebenarnya akan mengatakan andFloat,
dan kemudian anda akan lulus ia masuk
>> Menariknya, yang satu ini tidak dinamakan, tetapi semua parameter lain adalah,
jadi jika kita mempunyai hujah ke-3 saya boleh katakan andFloat
dan satu lagi apungan dan sebagainya.
Apabila saya panggil kaedah ini ia adalah pisang kursus,
jadi jika saya mempunyai objek, dan saya ditakrifkan satu kaedah yang dipanggil foo,
dan saya mahu memanggilnya, dan bukannya mengatakan foo terbuka / parens rapat
Saya akan membuka kurungan.
Berikut adalah nama kaedah saya.
Saya akan menutup pendakap, dan ini adalah objek yang saya memanggilnya pada.
Ingat, semua kaedah ini wujud dalam kelas
kerana kelas boleh mempunyai kaedah yang ditakrifkan di dalam mereka.
>> Di sini saya telah sewenang-wenangnya mencipta objek kelas beberapa,
dan ini adalah sintaks untuk berbuat demikian.
Terdapat 2 langkah untuk mewujudkan objek.
Langkah pertama adalah untuk mengatakan saya mahu untuk memperuntukkan ruang.
Ini adalah bersamaan malloc satu. Kami tidak mempunyai untuk mengatakan malloc lagi.
Kami jatuh m, dibuat ia alloc, dan digantikan c.. M.
Selepas kita alloc sesuatu kita perlu untuk memulakan ia.
Pada asasnya apabila anda mencipta objek anda mungkin mahu mempunyai beberapa logik
yang melaksanakan apabila mereka mencipta, jadi anda boleh lulus dalam beberapa nilai-nilai lalai
atau sesuatu seperti itu, dan begitu juga kaedah ini INIT adalah apa yang sebenarnya mencipta objek.
Kami mula memperuntukkan ruang, sama seperti yang kita lakukan dalam C,
dan kemudian kita memulakan, yang mungkin atau mungkin tidak melakukan banyak keseluruhan.
Kemudian kami kembali perkara ini menjadi sebuah o objek.
Terdapat bintang di sini kerana ini adalah teknikal penunjuk,
tetapi jangan bimbang, petunjuk tidak begitu besar berurusan dalam Objektif-C-lagi.
>> Sekarang kita telah instantiated kelas ini dipanggil NSObject,
dan ini hanya kelas rawak bahawa Apple mempunyai.
Kami telah instantiated ini, dan kini saya mempunyai contoh kelas ini
dalam ini o objek, jadi ini bermakna bahawa jika saya ditakrifkan
kaedah ini saya boleh memanggil mereka seperti ini.
Begitu juga, jika saya mahu memanggil kaedah dengan satu hujah,
jadi ini adalah kaedah bar, yang mengambil satu hujah,
dan di sini adalah Baz: kaedah qux, jadi ini mengambil masa 2 hujah.
Ini memanggil satu fungsi pada ini o objek.
Masuk akal?
Sintaks harus masuk akal, tetapi anda jenis mendapatkan digunakan untuk ia.
>> Okay, mari kita bercakap tentang beberapa perkara yang dibina ke dalam Objektif-C
yang tidak semestinya dibina ke C.
Dalam C kita jenis terpaksa berhadapan dengan tali kerana ini barisan watak bodoh,
dan ia mendapat benar-benar menjengkelkan.
Objektif-C mempunyai mereka semua dibina untuk kita, dan ia dibina di
menggunakan kelas ini dipanggil NSString.
Apabila saya mahu untuk mewujudkan NSString kita mempunyai sintaks lebih batin.
Bukannya mengatakan "cs50" kita katakan @ "cs50"
dan ini hanya sintaks untuk mengisytiharkan rentetan dalam Objektif-C-.
Ini adalah amat mudah lupa, jadi jangan.
Kini, apabila saya mempunyai ini, ini adalah rentetan, tetapi notis
ia adalah benar-benar hanya objek.
Saya berkata NSString, yang bermaksud saya telah instantiated kelas
dipanggil NSString, yang mana orang lain menulis untuk saya,
dan mereka sangat baik tentang ia, dan sebagainya sekarang
Saya boleh mula memanggil kaedah di atasnya.
Jika saya panggil kaedah panjang pada objek ini s
ia akan kembali kepada saya panjang rentetan.
Ini adalah seperti strlen di C.
Ini akan kembali 4.
>> Begitu juga, satu lagi kaedah yang saya mungkin mahu mengambil berat tentang adalah characterAtIndex ini.
Ini adalah satu kaedah yang mengatakan bahawa pada rentetan ini s
Saya mahu anda untuk mendapatkan watak 0,
dan sebagainya ini akan kembali kepada saya c aksara,
dan ada sekumpulan keseluruhan lebih kaedah ini bahawa anda boleh Google benar-benar mudah.
Dokumentasi Apple besar, dan kita akan melihat bahawa dalam sedikit.
Mereka adalah rentetan.
Kami juga telah array saiz berubah-ubah yang dibina masuk
Ingat dalam C apabila kita mengisytiharkan array
kita terpaksa untuk mengatakan anda mempunyai 5 elemen, akhir cerita.
Apabila kita mendapat JavaScript dan PHP kita boleh mula
melakukan perkara-perkara seperti menambah unsur-unsur atau bergerak unsur-unsur.
Kita boleh melakukan perkara yang sama dalam Objektif-C-.
Bukannya mewujudkan pelbagai cara C biasa
kita ada lagi satu lagi kelas yang dipanggil NSMutableArray.
Terdapat juga NSArray,
dan ini akan pada dasarnya merangkumi pelbagai beberapa.
Ini berkata, perkara pertama yang saya mahu lakukan adalah saya ingin memperuntukkan
ruang untuk pelbagai baru, dan selepas saya memperuntukkan ia
Saya kemudian perlu untuk memulakan ia.
Sekali lagi, hanya memanggil kedua-2 kaedah.
Sekarang ini bermakna bahawa dalam objek ini
Saya telah pelbagai kosong duduk di sana.
Jika saya mahu menambah sesuatu kepada pelbagai ini, saya boleh memanggil kaedah addObject.
Saya ingin menambah objek kepada pelbagai satu, dan saya ingin menambah rentetan CS50.
Jika saya mahu sebaliknya membuang yang boleh saya katakan saya mahu
membuang objek di tempat pertama pada array atau membantah.
>> Masuk akal?
Okay, anda jenis mendapatkan digunakan untuk perkara ini kurungan persegi.
By the way, dalam banyak perpustakaan Apple anda akan melihat NS ini.
NS sebenarnya bermaksud untuk langkah seterusnya, yang merupakan salah satu daripada Steve Jobs pertama syarikat,
dan itulah di mana dia benar-benar mula menulis banyak kod
sebagai jenis asas untuk Mac OS X dan semua barangan yang lain,
dan sebagainya NS ini adalah jenis warisan ini bagus melaungkan kepada salah satu syarikat awal
kembali apabila Apple pertama kali bermula.
Ia adalah di mana-mana.
Mari kita lihat pada contoh yang lebih menyeluruh Objektif-C.
Di sini saya dalam XCode.
Untuk sampai ke sini, saya mula-mula turun XCode dari App Store,
membuka ia naik, dan kemudian saya pergi di sini untuk fail,
di sini untuk projek baru, dan kemudian.
Selepas saya berbuat demikian saya mempunyai semua pilihan ini apa yang saya mahu untuk mewujudkan,
dan sebagainya kita akan mengambil melihat pilihan ini kemudian,
tetapi hanya untuk contoh ini, kerana kita sebenarnya tidak akan mempunyai app lagi,
Saya datang ke sini, dan saya berkata Command Line Tool,
dan ini merupakan satu aplikasi yang saya boleh dijalankan pada baris arahan
sama seperti kita telah berjalan dari C.
Itulah bagaimana saya mencipta projek ini, dan jadi sekarang saya di sini,
jadi mari kita melihat pertama di fail ini, dan ini harus kelihatan agak biasa.
Saya mempunyai nama int. Ada argc kawan saya, buddy argv lain saya.
Dan supaya kita boleh melihat bahawa ini adalah titik kemasukan bagi permohonan pertama saya Objektif-C.
Di sini kita boleh mengabaikan ini buat masa sekarang.
Ini adalah pada dasarnya beberapa barangan pengurusan memori yang anda tidak akan benar-benar
pernah perlu bimbang tentang.
>> Mari kita lihat pada blok pertama ini di sini.
Ini baris pertama, jika saya katakan Pelajar * alice = [[Pelajar alloc] INIT] apa bahawa melakukan?
Ini pelajar pertama di sini, ini adalah mungkin kelas.
Ini bukan satu kelas bahawa Apple menulis, tetapi ia adalah kelas yang saya tulis.
Perkara pertama yang saya mahu lakukan adalah saya ingin memperuntukkan ruang untuk pelajar baru,
dan kemudian saya mahu untuk memulakan, jadi ini memberikan saya kembali
objek ini pelajar baru, dan saya menyimpan ini dalam pembolehubah dipanggil Alice.
Di manakah kelas itu datang dari?
Nah, di sini pada sebelah kiri ini adalah semua fail yang berbeza di dalam projek saya.
Kita boleh lihat di sini saya mempunyai Student.h dan Student.m satu.
Fail h, ingat, adalah di mana saya mengisytiharkan semua perkara
yang akan wujud dalam kelas.
>> Mari kita lihat pada itu.
Baiklah, di sini kita mempunyai ini antara muka @, dan ini mengatakan bahawa di sini datang
pengisytiharan segala-galanya yang akan wujud dalam kelas saya.
Maka saya mempunyai kolon. Kemudian saya mempunyai perkara ini NSObject.
Kolon Ini menandakan bahawa sedikit harta pusaka yang kita telah membincangkan sedikit awal.
Ini kata segala-galanya NSObject boleh lakukan
mana NSObject adalah kelas ini ditulis oleh orang lain,
segala-galanya NSObject ini boleh dilakukan saya mahu menjadi mampu untuk berbuat demikian.
Dengan berkata: NSObject yang bermakna bahawa Saya pada dasarnya
mewarisi semua fungsi kelas lain.
Itu benar-benar memberi saya sekumpulan keseluruhan kaedah hartanah dan berbeza yang boleh saya gunakan.
Down sini saya mewujudkan 2 hartanah.
Ini bermakna pelajar saya, jika ini adalah struct, ini akan menjadi 2 perkara
dalam struct saya, jadi setiap pelajar mempunyai nama
yang adalah rentetan, dan pelajar juga mempunyai gred,
yang int.
>> Akhirnya, turun di sini saya akan untuk mewujudkan satu kaedah untuk pelajar saya.
Saya dipanggil kaedah saya, initWithName, dan ia mengambil satu hujah,
dan hujah itu adalah rentetan, dan saya memanggilnya menamakan.
Sekarang mari kita melihat bagaimana kita sebenarnya melaksanakan kelas ini.
Di sini, kini saya dalam file m. Saya,
m untuk pelaksanaan, saya rasa.
Saya mempunyai pelaksanaan, akhir saya, dan di sini adalah di mana saya sebenarnya menentukan
apa initWithName tidak.
Saya mempunyai initWithName, nama parameter saya, dan kemudian ini
adalah di mana saya sebenarnya mewujudkan pelajar,
dan sebagainya ini adalah sedikit samar, tetapi ini adalah jenis boilerplate
yang anda mahu termasuk dalam pengeluar anda.
Ini fungsi pengawalan sini, initWithName, adalah sejenis pembina.
Anda pada dasarnya membina objek pelajar baru
dan mungkin menghantar beberapa data di dalamnya.
Perkara pertama yang saya mahu lakukan ialah saya mahu panggil Init pada perkara ini super.
>> Ingatlah bahawa apabila saya kembali di sini di fail h
yang semua NSObject satu mempunyai pelajar juga mempunyai.
Itu bermakna apabila hendak mencipta seorang pelajar apa yang saya juga perlu lakukan ialah
pastikan bahawa NSObject yang saya warisi semua data dari
juga dimulakan dengan betul.
Apa yang saya perlu katakan adalah super ini sebenarnya akan merujuk kepada kelas induk
yang saya warisi dari, jadi saya mahu pastikan saya memulakan
segala-galanya bahawa saya bergantung kepada sebelum saya mula cuba untuk menggunakannya.
Kemudian jika itu dimulakan betul ini adalah hanya seperti mengatakan jika malloc
tidak kembali batal maka saya boleh mula menetapkan beberapa harta.
>> JavaScript dan PHP kami telah kata kunci ini dipanggil ini,
dan ini dirujuk kepada contoh semasa kelas.
Dalam Objektif C-kita panggil diri ini.
Bila saya katakan self.name, ini bermakna bahawa objek
Saya hanya menciptakan apabila saya berkata pelajar alloc Init,
yang akan memberikan saya kembali objek.
Ini bermakna saya mahu untuk menetapkan nama objek itu
apa yang saya sahaja berlalu.
Sama seperti dalam C, kita mengakses ahli dengan titik ini,
jadi self.name kata nama objek pelajar
kini akan menjadi apa sahaja yang anda hanya lulus masuk
Dan begitu akhirnya, saya boleh kembali jadi saya benar-benar mendapatkan kembali sesuatu.
>> Soalan?
Okay, jadi diri ini = super Init,
jika anda tidak benar-benar memahami barangan warisan jangan bimbang.
Hanya tahu bahawa jika anda pernah mahu untuk membuat kaedah INIT anda sendiri hanya
berbuat demikian, dan anda akan baik untuk pergi.
Yeah. >> [Pelajar] Apakah jika min diri?
Ini bermakna apabila kita malloc sesuatu yang kita sentiasa diperiksa jika ia adalah sama dengan null,
dan jika ia adalah batal, maka kita keluar.
Ini adalah perkara yang sama, kerana jika ini pulangan batal, maka kita mungkin akan kesalahan seg
jika kita mula cuba untuk memanipulasi ia.
Itulah kelas pelajar kita.
Ini bermakna kita boleh memulakan pelajar kita dalam salah satu daripada dua cara.
Jika saya katakan alloc pelajar Init Saya tidak menggunakan kaedah itu bahawa saya hanya menulis,
dan sebaliknya saya hanya boleh mengatakan alice.name,
dan sekarang saya akan menetapkan bahawa nama hartanah.
>> Begitu juga, jika saya mahu menggunakan bahawa kaedah initWithName
Saya hanya boleh mengatakan alloc, dan kemudian bukannya mengatakan INIT
Saya akan memanggil bahawa kaedah yang saya hanya dicipta, dan saya akan lulus dalam Bob.
Pada ketika ini, ini Bob objek mempunyai nama yang sama dengan Bob.
Okay, turun di sini saya menggunakan bahawa NSMutableArray bahawa kita melihat awal.
Saya memperuntukkan space.Then Saya Memulakan pelbagai baru.
Saya akan menambah 2 perkara.
Array ini kini memegang objek pelajar.
Perhatikan bahawa mana-mana saya tidak perlu untuk mengatakan ini adalah pelbagai pelajar.
Saya berkata ia adalah pelbagai, tempoh.
Kemudian saya boleh meletakkan apa-apa di dalamnya yang saya mahu.
Di sini saya mempunyai 2 objek.
>> Akhirnya, saya mempunyai objek lain di sini, TF ini.
Lebih sini di TF.h pada dasarnya perkara yang sama.
Saya warisi dari NSObject, dan dengan cara yang,
apabila anda membuat kelas ini semua dilakukan untuk anda,
ini jenis boilerplate muka.
Ia mempunyai harta pelajar.
Saya mempunyai kaedah pasangan di sini yang tidak benar-benar melakukan banyak keseluruhan,
dan sebagainya yang bermakna selepas saya mencipta objek ini TF
Saya boleh memanggil ini gred kaedah di atasnya seperti ini.
Sebarang soalan mengenai sintaks Objektif-C sebelum kita mula bergerak ke beberapa lebih
barangan pembangunan aplikasi menarik?
>> Okay, jadi mari kita sebenarnya membuat aplikasi iPhone.
Kelas teras yang anda akan menggunakan dalam aplikasi iPhone anda dipanggil pengawal pandangan,
dan pengawal pandangan pada dasarnya mewakili skrin tunggal
dalam aplikasi anda, jadi jika saya pada aplikasi muzik, sebagai contoh,
satu pandangan pengawal boleh mewakili pandangan di mana saya melihat semua lagu-lagu di bawah saya.
Satu lagi pengawal pandangan boleh apabila saya klik lagu dan mula bermain
atau kerana saya penggerudian ke dalam artis.
Setiap mereka skrin yang berbeza boleh diwakili sebagai pengawal pandangan yang berbeza,
dan pengawal pandangan adalah benar-benar hanya satu kelas yang mengatakan bagaimana skrin ini berfungsi.
Perkara dalam pengawal pemandangan, kita akan mempunyai sifat,
jadi perkara-perkara seperti butang akan menjadi harta pengawal pandangan kita.
>> Kami juga akan mempunyai kaedah, dan ini adalah pada dasarnya pengendali acara.
Kaedah ini mengatakan apabila anda menekan butang ini
Saya mahu melakukan sesuatu, dan akhirnya, sekali lagi,
kita akan menggunakan kata kunci ini diri untuk mengakses contoh semasa.
Untuk membina antara muka di IOS adalah sebenarnya benar-benar, benar-benar mudah.
Mereka mempunyai ini heret bagus dan drop antara muka dipanggil Interface Builder,
dan 2 konsep yang teras dawai sehingga Objektif-C anda untuk Interface Builder
adalah IBOutlet dan IBAction.
IBOutlet hanya berkata bahawa jika anda mengisytiharkan harta itulah butang,
dan anda mahu cangkuk ia sehingga sesuatu dalam UI sebenar anda,
anda akan mengatakan ia adalah sebuah kedai.
Begitu juga, jika anda mahu untuk mewakili pengendali acara
maka anda akan mengatakan ia adalah suatu tindakan.
>> Untuk benar-benar wayar ini perwakilan grafik
dan kod anda, ia benar-benar, benar-benar mudah.
Jika anda ingin melampirkan IBOutlet satu, semua yang anda perlu lakukan ialah anda mengawal klik,
dan kita akan melihat satu contoh ini benar-benar cepat.
Anda mengawal klik mana ia berkata Pengawal View.
Anda akan mengheret ke muka, atau sebaliknya,
jika anda mahu untuk bertemu pengendali acara anda akan mengheret dari antara muka
dalam arah yang lain.
Mari kita lihat pada contoh IOS benar-benar mudah.
>> Mari kita buat satu projek baru.
Saya akan datang sini untuk Permohonan,
dan saya akan klik Permohonan View Single.
Saya akan klik seterusnya. Saya akan memberikan projek saya nama.
Saya akan memanggilnya Hello.
Menariknya, Apple menganggap anda mewujudkan produk
supaya anda boleh menjual dan mereka boleh membuat wang.
Down di sini saya akan mengatakan bahawa ini adalah satu aplikasi iPhone.
Anda boleh mewujudkan aplikasi iPad, atau jika anda mahu untuk mewujudkan satu aplikasi mereka
yang menyokong kedua-dua peranti anda boleh melakukannya juga.
Ini adalah apa yang anda mahu checkmarks anda untuk kelihatan seperti.
>> Anda mahu menggunakan papan cerita, yang kita akan lihat nanti,
dan anda pasti mahu untuk menggunakan pengiraan rujukan automatik,
yang merupakan ciri baik yang menghalang anda daripada perlu untuk mengatakan malloc dan bebas.
Melainkan jika anda mahu panggil malloc dan bebas, saya akan meninggalkan didaftar ini.
Saya akan klik seterusnya, dan akhirnya, ini akan bertanya kepada saya di mana saya mahu menyimpannya.
Saya melanda akan mencipta, dan di sini kita pergi.
Saya telah mencipta satu projek baru.
Lebih sini di sebelah kiri adalah semua fail yang berada di dalam projek saya,
dan notis bahawa saya mendapat sekumpulan keseluruhan, dan saya tidak berbuat apa-apa.
IOS adalah besar.
>> Sebagai contoh, di sini ViewController.h ini,
ini akan mewakili pengawal pandangan pertama saya,
jadi skrin pertama di dalam aplikasi saya.
Sekarang kita tahu apa ini mengatakan.
Kami mengatakan saya memanggil ini ViewController kelas,
dan ViewController tidak semua bahawa seorang UIViewController tidak,
dan ini, sekali lagi, adalah beberapa kelas bahawa Apple menulis bahawa tidak banyak barangan berguna untuk kita
suka memaparkan skrin.
Berikut adalah di mana saya benar-benar boleh mula menentukan apa pengawal pandangan saya tidak,
dan ia ternyata bahawa saya benar-benar tidak perlu mana-mana ini.
Ini adalah kod boilerplate bahawa Apple memberikan saya secara percuma.
Saya tidak memerlukan bahawa baris pertama, atau saya tidak mempunyai kelas,
supaya kita boleh menghilangkan itu dan menghilangkan ini.
Okay, jadi ini adalah skrin kosong saya.
>> Sekarang mari itu klik pada MainStoryboard.storyboard ini,
dan ini adalah di mana ia bermula untuk mendapatkan menarik.
Ini merupakan skrin pertama pada apl saya.
Jika saya ingin menambah butang, dalam HTML Saya terpaksa mewujudkan tag butang.
Dalam Android anda mempunyai untuk mencipta tag butang,
tetapi dalam IOS jika saya hanya datang ke sini ke kanan bawah
dan jika saya klik pada satu ini 3 di sini di mana ia mengatakan Objek,
dan saya boleh tatal ke bawah, atau saya boleh mula mencari butang.
Dan melihat, butang, jadi jika saya sebenarnya seret dan menggugurkan hak ini di sana,
Saya baru sahaja menambah butang ke skrin ini di aplikasi saya.
Jika saya mahu menukar teks, saya boleh klik dua kali,
mengatakan sesuatu yang menarik seperti "Tekan Me."
Okay, sekarang jika saya menjalankan aplikasi ini, jadi kami menyusun,
jadi untuk menjalankannya saya klik butang play di sebelah kiri atas, dan terdapat aplikasi saya.
Saya tidak berbuat apa-apa, dan saya mendapat iPhone manis mencari aplikasi.
Jika saya mahu berhenti, anda boleh klik butang henti
kerana ia lebih menyeronokkan.
>> Mari kita mengatakan bahawa saya benar-benar mahu sesuatu yang berlaku apabila saya menekan butang ini.
Untuk melakukan bahawa apa yang saya perlu lakukan ialah saya perlu untuk mewujudkan
acara pengendali baru atau sesuatu tindakan.
Ini bermakna bahawa saya perlu untuk mewujudkan beberapa kaedah yang saya mahu dipanggil
apabila saya menekan butang, jadi mari kita mewujudkan satu kaedah baru.
Saya dalam ViewController.h.
Saya perlu mengatakan bahawa kaedah wujud.
Saya memerlukan sempang pertama kerana saya akan memanggil ini pada pengawal pandangan.
Saya perlukan untuk memberi jenis ini.
Jenis ini akan menjadi bahawa perkara IBAction yang kita lihat sebelum ini.
Ini merupakan pengendali acara, jadi ia akan kembali IBAction,
dan ini adalah petunjuk untuk XCode untuk mengatakan bahawa
ini adalah sesuatu yang saya mahu untuk wayar sesuatu untuk.
Saya boleh memberikan nama, seperti buttonPressed, koma bernoktah.
>> Sekarang saya telah diisytiharkan sebagai kaedah baru di dalam kelas saya.
Saya telah berkata kaedah ini telah wujud.
Sekarang mari itu datang ke ViewController.m,
dan katakan apa kaedah ini boleh dilakukan.
Jika saya mula menaip, sebagai contoh, (tidak sah) buttonPressed
notis XCode adalah benar-benar bagus dan autocompletes bagi saya.
Itu benar-benar indah.
Notis di sini bahawa di dalam fail. M Saya juga boleh mengatakan tidak sah,
dan ini adalah kerana IBAction bahawa sebenarnya bukanlah jenis.
Ia sebenarnya hashtag ditakrifkan tempat untuk menjadi tidak sah,
dan sekali lagi, ini adalah hanya petunjuk untuk XCode yang mengatakan
Saya mahu ini menjadi pengendali acara, dan kita akan melihat mengapa hanya dalam kedua.
Apabila butang ini ditekan saya akan melakukan sesuatu yang menjengkelkan
suka memaparkan popup.
>> Untuk melakukan bahawa saya boleh membuat contoh baru kelas ini dipanggil UIAlertView,
dan ini adalah kelas bahawa Apple menulis itu akan memaparkan popup menjengkelkan.
Kami akan memanggil ini amaran timbul, dan saya mempunyai 2 langkah, ingat, untuk mewujudkan objek ini.
Perkara pertama yang saya perlu lakukan ialah memperuntukkan ruang.
Saya mahu UIAlertView.
Saya ingin memperuntukkan ruang. Itulah kaedah pertama saya.
Kaedah seterusnya saya adalah saya mahu untuk memulakan,
dan jadi saya mempunyai ini besar, kaedah lama dipanggil initWithTitle.
Itu pada asasnya akan mengawal apa yang timbul ini berkata.
Gelaran timbul saya boleh hello.
Mesej ini timbul boleh menjadi "Ini adalah IOS."
Perkara Perwakilan, saya tidak tahu apa yang.
Mari kita mengatakan ia tidak.
Sekarang butang yang akan muncul boleh mengatakan sesuatu seperti "Ia pasti adalah,"
dan saya tidak benar-benar mahu mana-mana butang lain, jadi mari kita memadamkannya dan tutup kurungan.
>> Okay, saya mencipta salah satu tambahan. Terdapat kita pergi.
Ini adalah bagaimana saya boleh mewujudkan timbul baru.
Jika saya mahu sebenarnya menunjukkan yang timbul, saya mahu untuk memanggil kaedah menunjukkan.
Untuk melakukan yang boleh saya katakan amaran dan menunjukkan,
dan sekali lagi, autoselesai adalah super nice.
Jika saya terlupa apa yang adalah, jika saya hanya ditaip dalam s,
Saya boleh menatal di sini untuk mengetahui apa yang ia adalah,
dan ia menapis baik.
Sekarang saya mencipta ini timbul baru.
Kita akan kembali apa perwakilan bermakna kemudian,
dan sekarang saya ingin mengatakan saya mahu kaedah ini akan dipecat
apabila saya tekan butang, jadi saya akan datang kembali ke papan cerita saya,
dan saya mahu sekarang melampirkan IBAction ini.
Perkara pertama yang anda mahu lakukan adalah klik butang.
Apabila saya tekan butang ini saya ingin sesuatu untuk berlaku.
Saya tidak akan tahan kawalan.
Saya akan klik dan seret dari butang
di sini di mana ia berkata Pengawal View.
Kita boleh melihat bahawa ia baik menyala.
>> Jika saya biarkan pergi dengan tetikus saya, saya kini mempunyai ini timbul di sini di mana saya mempunyai beberapa pilihan.
Salah satu daripadanya adalah peristiwa-peristiwa yang saya boleh mendaftar.
Ini semua adalah kaedah saya diisytiharkan dalam fail h saya sebagai IBActions.
Ini adalah bagaimana XCode tahu apa yang sepatutnya muncul dalam senarai ini sedikit,
supaya hanya petunjuk.
Jika saya klik pada butang ditekan, saya kini berdaftar pengendali acara.
Di JavaScript kita terpaksa untuk mengatakan saya mempunyai beberapa kod yang berdaftar pengendali acara.
Dalam Objektif C-ia adalah benar-benar yang mudah.
Jika saya menjalankan ini lagi
sekarang apabila saya menekan butang pengendali acara saya akan api,
dan saya akan untuk mendapatkan ini timbul.
Super, super mudah di sana.
>> Jika anda pernah mahu untuk melihat semua peristiwa-peristiwa yang berlaku yang hendak didaftarkan
pada komponen jika saya klik pada butang ini
dan saya datang ke sini untuk sebelah kanan
pertama anda boleh lihat di sini saya boleh melakukan perkara-perkara seperti jenis butang,
jadi jika anda mahu satu mereka saya atau butang kenalan add
atau apa sahaja.
Jika saya mahu lihat semua peristiwa yang pada butang ini
jika saya datang sepanjang jalan di sini untuk sebelah kanan
kita boleh lihat di sini pada peristiwa Saya mempunyai semua peristiwa-peristiwa yang berbeza.
Saya boleh menekan butang, apabila saya melepaskan butang, apabila saya menggandakan paip atau apa sahaja,
dan satu saya hanya berdaftar adalah acara ini dipanggil Touch Up Inside,
dan ini mengatakan bahawa sebaik sahaja jari saya datang dari butang
bahawa acara akan kebakaran, dan itulah apa yang hanya berlaku.
Ini adalah jenis lalai acara butang ditekan.
>> Sebarang soalan setakat ini?
Okay, itu adalah bagaimana kita boleh memulakan wayar sehingga perkara dalam kod kami
kepada perkara-perkara di dalam antara muka kita.
Ingat perkara pertama yang kami terpaksa lakukan adalah untuk mencari kod,
dan kemudian kita berwayar antara muka untuk kod,
dan terdapat aplikasi pertama kami.
Okay, itu benar-benar sejuk, dan kami mencipta butang ini.
Bagaimana jika kita tidak mahu mempunyai untuk mewujudkan sekumpulan hartanah
mewakili butang ini?
Sebagai contoh, dalam Tic Tac Toe saya mempunyai 9 butang,
dan ia akan menjadi super, super menjengkelkan untuk mempunyai untuk drag dan drop 9 kali
atau jika saya terpaksa membuat Tic Tac Toe dengan 81 dan bukannya daripada 9
dan saya terpaksa untuk seret dan lepaskan 81 kali, dan itulah tempang.
Apa yang kita boleh lakukan dan bukannya adalah sama seperti HTML
apabila kita mempunyai perkara-perkara seperti ID dan nama-nama dan kita boleh mencari perkara-perkara
oleh ID mereka, terdapat tanggapan serupa dalam IOS dipanggil tags.
>> Tag hanya pengecam unik berangka bagi komponen.
Jika saya katakan ini mempunyai tag 0, sebagai contoh,
jika saya membuat butang dan memberikan tag 0, dan kita akan melihat bagaimana untuk melakukannya dalam hanya sesaat,
jika saya mahu mendapatkan butang yang saya hanya boleh katakan saya mahu panggil
, viewWithTag kaedah pada objek di sini
self.view, yang mewakili skrin semasa, sebagai contoh.
Jika saya panggil bahawa kaedah viewWithTag, saya akan tarik balik butang dengan tag 0.
Mari kita melihat ini dengan bangunan Tic Tac Toe.
Pertama, ini adalah papan cerita saya.
Saya telah mencipta ini 10 butang UI.
Notis mereka semua saiz yang sama.
Jika saya klik salah satu daripada ini dan saya kembali di sini di sebelah ini betul
anda akan melihat saya diselaraskan font di sini, jadi saya membuat font sedikit lebih besar,
tetapi apa yang saya juga tidak saya menetapkan tag ini.
Saya berkata bahawa ini mempunyai tag 1, dan itulah kiri atas.
>> Sekarang, jika saya klik butang lain, seperti satu ini kedua di sini,
sekarang anda akan melihat bahawa tag saya ialah 2.
Setiap butang ini hanya mempunyai tag yang unik,
dan sebagainya ini kemudian bagaimana saya akan mula berinteraksi
dengan aplikasi saya.
Ini adalah semua dalam satu pandangan pengawal,
tetapi di sini ialah apa yang kita ada.
Kami mempunyai 3 harta di sini.
Yang pertama dan yang terakhir akan mewakili negeri lembaga saya.
Pada asasnya ini pertama adalah pelbagai yang mewakili mana Xs dan Os.
Ini satu lagi di sini memberitahu kita yang seterusnya ia.
Anda akan melihat bahawa saya juga mempunyai perkara-perkara ini di sini.
Sebelum ini apabila kita mengisytiharkan hartanah kita memberikan mereka nama dan jenis.
Kita juga boleh memberikan mereka beberapa maklumat tambahan di sini.
Ini pertama berkata nonatomic, dan apa ini mengatakan
pada dasarnya hanya satu perkara yang pernah akan cuba untuk mengakses pembolehubah ini pada satu-satu masa.
Anda boleh melakukan aplikasi yang lebih kompleks yang multi-threaded,
dan sebagainya kembali Gores kita mempunyai benang yang berbeza,
dan sprites berbeza boleh melakukan perkara-perkara yang berbeza pada masa yang sama.
>> Jika itu tidak berlaku, yang ia tidak dalam apa-apa yang kita akan melihat,
jika kita katakan nonatomic ia sebenarnya akan membuat perkara yang sedikit lebih cepat.
Kami juga mempunyai perkara ini dipanggil serahak, kuat atau lemah.
Ini menetapkan hanya mengatakan bahawa ini adalah jenis standard.
Ini bukanlah satu objek atau penunjuk kerana ini adalah hanya bool,
begitu bool dibina ke dalam C-Objektif.
Ini mengatakan jangan cuba untuk melakukan apa-apa yang mewah dengan petunjuk sini.
Ia scaler tetap lama.
Kuat dan lemah, lemah ini mengatakan yang sebenarnya
Saya mahu ini menunjuk kepada sesuatu dalam pengawal pandangan.
Saya tidak akan sebenarnya memperuntukkan atau Init ini diri saya.
Pembina muka, apabila saya menjalankan aplikasi, akan untuk mengendalikan semua pengawalan bahawa.
Jika saya katakan lemah, yang mengatakan bahawa orang lain akan mewujudkan ini.
Jika saya katakan kuat, ini mengatakan bahawa saya akan menjadi salah satu
itu mewujudkan objek ini lembaga,
dan sebagainya di sini saya mempunyai beberapa lebih kaedah di sini,
sebagai contoh, tindakan apabila butang permainan baru ditekan,
suatu tindakan bagi apabila mana-mana butang lain ditekan,
dan sebagainya.
>> Kami tidak akan masuk ke dalam terlalu banyak logik daripada Tic Tac Toe,
walaupun ia adalah sangat menarik, tetapi mari kita lihat pada
beberapa perkara yang kita boleh lakukan di dalam IOS.
Ini kaedah permainan baru akan akan dipecat
apabila saya tekan butang permainan baru.
Untuk cangkuk bahawa sehingga saya hanya datang ke papan cerita saya.
Saya klik pada permainan baru.
Jika saya datang ke sini ke kanan, saya dapat melihat bahawa
Touch Up Inside berwayar kepada kaedah newGame.
Itulah sebabnya ini akan mendapatkan dipecat.
Kaedah newGame akan melakukan beberapa set up.
Ia akan berkata saya mahu anda untuk membersihkan negeri lembaga.
Ini adalah satu kaedah yang baik pada yg mungkin berubah array.
Ini akan mengatakan ia kini giliran X,
dan sekarang saya akan mengambil kesempatan daripada perkara ini viewWithTag.
>> Saya tahu bahawa butang saya mempunyai tag 1-9,
dan itulah sesuatu yang saya sewenang-wenangnya dipilih.
Jika saya mahu untuk menetapkan teks setiap butang kosong
kerana saya hanya memulakan permainan baru dan saya tidak mahu apa-apa
Xs atau Os akan dibiarkan lebih yang boleh saya lakukan ini.
Saya boleh katakan saya mahu pandangan dengan tag, 1, 2, 3, 4 et cetera.
Ini akan tarik butang yang berbeza setiap kali.
Di sini saya akan untuk membuang ia UIButton.
Sama seperti kita boleh membuang ints terapung dan sebaliknya
ini mengatakan bahawa saya mahu untuk membuang ini untuk UIButton.
Ini bermakna jenis ini akan menjadi * UIButton
kerana petunjuk, tetapi jangan bimbang, mereka tidak menakutkan lagi.
>> Apabila saya mempunyai butang ini saya akan memanggil kaedah di atasnya.
Kaedah ini dipanggil setTitle forState, dan sebagainya ini mengatakan
Saya mahu untuk menetapkan teks butang untuk menjadi rentetan kosong,
dan saya mahu ia menjadi rentetan kosong apabila ia tidak ditekan.
Jika saya menggunakan kaedah ini, saya boleh menukar teks butang
secepat seseorang menekan, tetapi kita mahu mengatakan apabila butang hanya duduk di sana
Saya mahu teks untuk menjadi kosong.
Akhirnya, kita pergi untuk memulakan lembaga saya,
dan saya akan mengatakan bahawa segala-galanya kini pada 0,
supaya lembaga ini ahli-ahli tidak berubah adalah pelbagai yg mungkin berubah,
yang bermakna saya boleh memanggil kaedah addObject dan hanya dalam 0 ia.
Itulah apa yang berlaku apabila saya mencipta permainan baru.
>> Mari kita melihat satu lagi.
Kaedah ini di sini adalah IBAction itu akan ditekan
setiap kali salah mereka dataran ditekan.
Sekarang kita mempunyai beberapa Tic Tac Toe logik di sini.
Kita memikirkan yang sebaliknya ia adalah,
dan berdasarkan itu kita sama ada menetapkan X atau O,
tetapi kita dapati bahawa kita sedang menggunakan semula ini pengendali acara yang sama
bagi setiap satu dari orang-orang butang.
Ini bermakna bahawa saya tidak mempunyai kaedah untuk butang kiri atas,
kaedah yang berbeza untuk butang kanan bawah, walaupun saya boleh berbuat demikian.
Itu tidak akan benar-benar menjadi reka bentuk yang baik.
Apa yang saya lakukan di sini ialah saya sebenarnya akan menentukan
apa tag butang yang telah ditekan.
Anda dapati bahawa kaedah ini bermain mengambil satu hujah.
Ia dipanggil penghantar, dan apa penghantar penghantar akan
mewakili apa yang telah diambil tindakan ke atas.
Jika saya tekan butang, pengirim ini akan menjadi yang UIButton
bahawa saya sebenarnya ditekan, supaya bermakna bahawa UIButton
mempunyai tag kerana saya mencipta tag.
>> Jika saya ingin mendapatkan di tag saya hanya boleh mengatakan
Saya mahu tag penghantar,
dan sekali lagi, saya hanya casted untuk UIButton.
Saya kebetulan tahu bahawa pengirim akan UIButton.
Ia tidak selalunya perlu untuk menjadi UIButton.
Saya boleh, sebagai contoh, mendaftar pengendali acara yang sama
untuk satu untuk butang, satu untuk gelangsar.
Dalam kes ini, saya tahu mereka semua butang, jadi saya akan katakan
Saya mahu ini menjadi butang, dan kemudian saya boleh mendapatkan tag,
dan dari tag sekarang saya tahu di mana saya di dalam lembaga.
Kemudian saya hanya boleh menetapkan sama ada X atau O, boleh flip giliran,
periksa yang telah memenangi, dan sebagainya.
>> Sebarang pertanyaan mengenai perkara ini setakat ini?
Okay, semua kod yang kami posted talian kita tidak mahu masuk ke dalam terlalu banyak
logik Tic Tac Toe, tetapi kini anda boleh melihat yang benar-benar
semua yang kita lakukan adalah kita menggelung lebih array ini,
jadi kami mempunyai beberapa untuk gelung sini, dan kami hanya membandingkan untuk melihat
adakah kita mempunyai perlawanan dalam semua baris, perlawanan dalam lajur atau apa-apa seperti itu.
Untuk benar-benar menjalankan aplikasi ini, jika saya ketuk pada salah satu butang ini
bahawa kaedah bermain dipecat, supaya bermakna saya hanya menetapkan
butang untuk menjadi X, jadi sekarang butang ini akan O, dan sebagainya,
dan supaya bagaimana kita sedang mula untuk berinteraksi dengan aplikasi halaman ini tunggal.
>> Kami akan hantar kod, jadi berasa bebas untuk meneliti bahawa,
tetapi mari kita kini bercakap tentang beberapa aplikasi yang lebih daripada sekadar satu halaman.
Seperti yang menarik sebagai Tic Tac Toe, banyak aplikasi dalam IOS
adalah jenis gerudi ini ke bawah perkara dengan skrin berganda.
Konsep pertama yang kita akan perlu untuk bercakap tentang protokol,
dan protokol adalah hanya satu set kaedah
bahawa anda boleh berjanji untuk menentukan.
Jika saya membuat ini protokol baru dengan 2 kaedah, yang satu ini pertama,
jika jenis pulangan adalah tidak sah, saya memanggilnya foo.
Ia tidak mengambil hujah. Saya mempunyai kaedah lain.
Ia akan kembali int. Saya memanggilnya bar, dan ia mengambil satu hujah.
Semua protokol ini yang dipanggil SomeProtocol di sini,
ini adalah satu set perkara yang seseorang boleh melaksanakan.
Saya telah tidak di dalam protokol ini berkata apa foo tidak.
Sebaliknya, saya hanya mengatakan anda boleh menentukan foo jika anda mahu.
Jika saya mewujudkan pengawal pandangan atau mewujudkan kelas
Saya boleh di dalam janji kelas untuk melaksanakan
beberapa kaedah ini, jadi sebagai contoh, jika mengatakan
ini sekarang mengatakan saya membuat janji kepada anda bahawa di dalam
ini kelas pengawal pandangan saya akan mempunyai definisi bagi kedua-dua foo dan bar.
>> Mengapa yang berguna?
Banyak komponen di dalam IOS mengambil kesempatan ini
corak reka bentuk yang dipanggil delegasi, dan apa delegasi mengatakan
yang, sebagai contoh, jika saya mempunyai kotak teks
dan terdapat beberapa peristiwa yang boleh didaftarkan di dalam kotak teks saya,
bukannya mewujudkan peristiwa berasingan apa yang saya boleh lakukan yang boleh saya katakan
mewakilkan kotak teks ini akan menjadi objek beberapa.
Apabila saya mengatakan bahawa ini adalah perwakilan sekarang ini bermakna bahawa
apabila beberapa acara telah dipecat dalam kotak teks
bukannya perlu mendaftar atau apa-apa seperti itu
ia hanya akan memanggil kaedah pada perwakilan.
Sebagai contoh, di dalam kotak teks saya, saya mempunyai kaedah untuk apabila saya menekan
yang dilakukan butang di sebelah kanan bawah,
dan sebagainya dan bukannya mendaftar pengendali acara apa yang saya boleh katakan
kotak teks, di sini adalah satu objek yang saya mahu anda untuk memanggil kaedah
setiap kali seseorang menekan butang yang dilakukan,
dan itu bererti bahawa objek yang mempunyai untuk melaksanakan beberapa protokol
yang mengatakan bahawa saya berjanji untuk menentukan bahawa butang tindakan yang dilakukan,
kerana jika ia tidak mentakrifkan kaedah itu dan anda tekan Selesai,
maka ia akan menjadi mengelirukan.
>> Mari kita lihat pada contoh.
Di sini saya hanya mempunyai satu kotak teks,
dan salah satu sifat kotak teks ini di sini di sebelah ini betul adalah perwakilan.
Ini adalah harta tanah kelas.
Apa yang saya lakukan di sini adalah saya mengawal diklik, dan saya diheret dari tempat ini di sini
pengawal pandangan, dan yang mengatakan kini mewakilkan kotak teks ini
akan menjadi pengawal pandangan.
Ini bermakna bahawa apabila beberapa tindakan berlaku, dan bukannya mendaftar
pengendali acara berasingan saya mahu anda untuk menghantar mereka untuk mewakilkan.
Sekarang mari kita lihat pada pengawal pandangan saya.
Dalam fail h Saya telah membuat janji.
Saya telah berjanji untuk melaksanakan beberapa kaedah di dalam protokol ini
dipanggil UITextFieldDelegate, dan sekali lagi,
ini adalah hanya beberapa senarai beberapa perkara yang saya boleh memilih untuk melaksanakan.
>> Jika saya datang ke sini dalam fail saya. M, saya telah melaksanakan satu kaedah itu.
Saya telah dipanggil ia textFieldShouldReturn
kerana itulah apa yang ia dipanggil dalam protokol.
Dan sekarang apabila saya menekan butang dalam dilakukan medan teks yang
ini adalah apa yang berlaku untuk mendapatkan dipanggil, jadi saya tidak mendaftarkan sebuah pengendali acara.
Saya disambungkan perwakilan, dan apabila acara ini dipecat
ini adalah kaedah yang akan mendapat dipanggil, jadi jika saya datang ke sini untuk storyboard saya dan jalankan ia-
manakala yang memuatkan kita boleh lihat apa yang ini tidak.
Pada skrin saya Saya mempunyai 2 perkara.
Saya mempunyai medan teks ini, dan saya mempunyai label ini.
Saya hanya mengatakan saya mahu teks label ini
untuk menjadi sama dengan apa yang pengguna ditaip dalam medan teks.
Ini sejajar seterusnya di sini adalah hanya satu kaedah yang saya memanggil
pada medan teks mengatakan saya mahu anda untuk menyembunyikan keyboard.
Ini hanya kaedah sewenang-wenangnya bahawa Apple telah memilih.
>> Sekali lagi, sebelum saya melakukan apa-apa saya terpaksa wayar segala-galanya, jadi saya pertama kali datang ke sini.
Dari pengawal pandangan saya seret ke atas kotak teks.
Saya lepaskan, dan saya boleh lihat di sini bahawa saya boleh membuat ini harta medan teks
sejak di sini dalam pengawal pandangan saya telah ditakrifkan harta
yang satu IBOutlet medan teks.
Ini mengatakan bahawa saya boleh wayar harta tanah ini sehingga
ke medan teks dalam UI saya.
Sekarang apabila saya klik ini saya boleh mula menaip.
Sekarang, jika saya klik butang yang dilakukan ini akan api
acara bahawa saya kini boleh bertindak balas terhadap.
No event pengendali.
Itulah bagaimana saya hanya menyahut butang yang dilakukan.
Masuk akal?
>> Ini bukan satu corak reka bentuk yang anda mungkin tidak pernah mendapati diri anda
mewujudkan protokol anda sendiri, tetapi hanya tahu bahawa beberapa
IOS komponen yang berlainan mendaftar peristiwa dalam cara yang berbeza.
Butang, sebagai contoh, menggunakan mereka IBActions.
Medan teks, di sisi lain, akan menggunakan perwakilan.
Kita boleh lihat dan anda boleh melihat semua dalam yang up dokumentasi.
By the way, ada sebenarnya satu tan barangan UI dibina ke dalam IOS untuk anda,
demikian bagi contoh, cara saya dibuat yang dikatakan dilakukan di sebelah kanan bawah
saya memilih bidang ini teks.
Saya datang ke sini.
Saya menatal ke bawah sedikit untuk kembali kunci,
dan saya benar-benar boleh membuat ini sekumpulan keseluruhan perkara, seperti jika saya mahu bahawa untuk mengatakan
kecemasan memanggil sebaliknya saya boleh berbuat demikian, yang benar-benar rawak,
dan saya tidak tahu mengapa ada panggilan kecemasan butang terbina dalam,
tetapi di sana, ia berkata panggilan kecemasan dalam huruf benar-benar kecil.
Terdapat anda pergi.
>> Pasti menerokai semua pilihan-pilihan yang berbeza dalam IOS.
Sebarang pertanyaan pada perwakilan?
Sekali lagi, hanya corak reka bentuk yang menarik yang anda harus sedar.
Baiklah, mari kita seterusnya, lihat pemandangan meja.
Satu paparan jadual pada asasnya bahawa senarai barangan yang adalah seluruh tempat dalam IOS.
Apabila anda Melibas melalui semua kenalan anda, anda sedang melihat
halaman menetapkan, dan yang jenis senarai perkara dipanggil pandangan jadual.
Melaksanakan paparan jadual di IOS adalah agak mudah.
Sebaliknya membuat kelas yang turun dari yang UIViewController
seperti yang kita telah dilakukan sebelum kita hanya perlu untuk mengatakan bukannya
segala UIViewController tidak saya mahu lakukan,
Saya katakan segala UITableViewController adakah saya mahu lakukan,
supaya hanya menambah beberapa perkara tambahan yang benar-benar dilakukan untuk kita.
Yang perlu kita lakukan sangat sedikit pada dasarnya mengisi tempat kosong dalam jadual.
>> Dalam usaha untuk memaparkan jadual yang saya perlukan untuk menjawab beberapa soalan.
Soalan pertama yang saya perlukan untuk menjawab ialah berapa banyak bahagian dalam jadual?
Apabila anda Melibas melalui aplikasi kenalan anda, anda akan melihat bahawa ia adalah jenis
dianjurkan oleh Seperti, maka anda mempunyai Bs, dan anda mempunyai bahawa header sub sedikit.
Setiap daripada mereka dipanggil seksyen.
Anda mungkin atau tidak mungkin perlu ini.
Perkara pertama yang anda perlu lakukan adalah melaksanakan kaedah
dipanggil tableView: numberOfSectionsInTableView.
Yang hanya kembali berapa banyak bahagian yang anda mempunyai,
jadi ini boleh mengatakan kembali satu jika anda mempunyai satu jadual pandangan yang besar.
Persoalan seterusnya yang IOS perlu tahu berapa banyak baris adakah anda mempunyai?
Sebagai contoh, anda Melibas melalui paparan jadual.
Anda mempunyai beberapa lagu-lagu yang tetap anda melihat atau nombor tetap kenalan.
Jika anda saya, sudah tentu, tidak begitu banyak,
dan supaya bagaimana IOS tahu berapa banyak sel-sel untuk memaparkan.
>> Sekali lagi, ini boleh mengatakan sesuatu seperti 3 pulangan.
Paparan jadual saya mempunyai 3 baris.
Akhirnya, IOS perlu tahu apa yang setiap sel kelihatan seperti,
jadi apa yang ia sebenarnya akan lakukan ialah memanggil kaedah ini turun sini,
ini tableView: cellForRowAtIndexPath.
Ia akan memanggil kaedah ini pada setiap sel tunggal di dalam jadual anda.
Bagaimana ia tahu berapa kali untuk memanggil ia?
Nah, anda memberitahu ia di dalam bilangan baris dalam seksyen.
Kami akan memanggil ini pada setiap sel-sel kita,
dan di dalam ini adalah di mana anda sebenarnya boleh melakukan perkara-perkara seperti
menetapkan teks atau memberitahu anda apa yang sedikit butang biru di sebelah kanan tidak.
Corak untuk mendapatkan sel-sel ini, kita akan menggunakan kaedah ini
dipanggil dequeueReusableCellWithIdentifier.
>> Objektif-C adalah sebenarnya sangat terkenal untuk panjang nama kaedah mereka yang tidak masuk akal,
dan ini adalah benar-benar kes baik dalam contoh titik.
Apa kaedah ini tidak adalah ini hanya mengatakan saya mahu anda memberi saya sel.
Hanya satu perkara yang IOS.
Jika anda mempunyai sesuatu seperti 100.000 lagu pada iPod anda
apa yang IOS tidak mahu lakukan ialah memperuntukkan 100.000 sel-sel,
kerana jika anda berada di bahagian atas senarai anda, adakah anda benar-benar perlu untuk memperuntukkan memori
untuk sel itulah 99.000 baris ke bawah?
Tidak, kerana seperti yang anda menatal anda boleh jenis memperuntukkan seperti yang anda pergi bersama-sama.
Ini dilakukan untuk anda.
Anda tidak perlu bimbang tentang semua barangan prestasi yang bodoh.
Apa yang anda katakan anda memanggil kaedah ini dequeueReusableCellWithIdentifier,
dan ini berkata, okay, jika anda perlu untuk saya akan mewujudkan sel yang baru untuk anda.
>> Tetapi jika anda berada di bawah meja dan anda sudah diperuntukkan sesetengah sel
di atas meja yang anda benar-benar tidak akan memerlukan bila-bila masa tidak lama lagi
Saya akan memberi anda salah satu daripada mereka kembali bukannya memperuntukkan satu yang baru,
dan sebagainya ini adalah satu kebimbangan prestasi bagus.
Anda tidak perlu untuk memperuntukkan sel-sel sendiri.
Itu akan memberi anda kembali sel.
Ia akan kembali kepada anda objek bimbit.
Sebaik sahaja anda mempunyai objek sel anda boleh melakukan barangan.
Anda boleh menetapkan teks sel dengan harta ini dipanggil teks label.
Anda boleh menambah bahawa anak panah di sebelah kanan atau beberapa perkara lain yang rawak
dengan harta ini selain dipanggil accessoryType, dan sebagainya dan sebagainya.
>> Mari kita melihat sebenarnya melaksanakan paparan jadual sekarang.
Apabila saya mencipta projek ini
bukannya mengatakan permohonan pandangan tunggal saya sebenarnya datang ke sini
permohonan tuan-detail, dan sebagainya pada dasarnya ini sepadan dengan aplikasi mel
pada iPad dengan paparan jadual di sebelah kiri dan kemudian kandungan di sebelah kanan.
Pada iPod atau iPhone ini akan sesuai untuk paparan jadual tunggal.
Itulah di mana saya mendapat kod permulaan saya.
>> Mari kita mula-mula mengambil melihat papan cerita.
Semua ini telah dilakukan bagi saya, pada dasarnya diwujudkan.
Ini bar navigasi menunjukkan kepada saya apa contoh sel boleh kelihatan seperti,
dan saya dua kali ganda boleh klik ini, menukar tajuk.
Sebarang kemusykilan UI lain saya boleh mengendalikan di sana.
Fail pengepala kelihatan benar-benar mudah.
Bukannya mengatakan ini adalah UIViewController kita sedang mengatakan ini adalah satu
TableViewController, jadi kita tahu bahawa kita mahu untuk memanggil semua orang-orang kaedah jadual.
Seterusnya saya ingin untuk mencipta harta yang akan mewakili
perkara di dalam jadual saya.
Jadual ini akan sewenang-wenangnya memaparkan
senarai buah-buahan, dan jadi saya perlu untuk mewujudkan beberapa pelbagai
di mana saya boleh memasukkan buah-buahan.
Dalam fail pelaksanaan saya perkara pertama yang saya mahu lakukan
ialah saya mahu memastikan saya memulakan array ini.
>> Saya berkata alloc INIT, mencipta pelbagai buah-buahan saya,
dan saya menambah 4 perkara, salah satu yang lebih kontroversi daripada 3 yang lain.
Dan kini saya mempunyai pelbagai saiz 4.
Kami berjabat ia di CS50.
Saya kini mempunyai pelbagai saiz 4.
Sekarang saya akan mula menjawab soalan-soalan ini, dan sebenarnya,
apabila saya mencipta aplikasi ini semua ini telah dilakukan bagi saya.
Saya tidak mempunyai untuk menaip beberapa seksyen dalam paparan jadual.
Ia sudah ada, dan saya mengisi tempat kosong.
Berapa bab yang saya miliki?
Satu. Semua dilakukan.
Berapa banyak baris yang saya miliki?
Well, saya mempunyai satu baris bagi setiap buah-buahan, supaya kiraan ini
adalah harta pelbagai mana-mana yang mengatakan bagaimana besar adalah ia?
Itulah berapa banyak baris saya mempunyai.
Akhir sekali, saya perlu mengatakan apakah setiap sel kelihatan seperti?
Saya akan untuk mengatakan dequeueReusableCellWithIdentifier.
>> Sekali lagi, ini telah ditulis untuk saya.
Saya tidak perlu melakukan ini diri saya sendiri, dan saya ingin mendapatkan kembali
sel ini di lokasi ini.
Ingatlah bahawa kita sedang memanggil kaedah ini sama pada setiap sel tunggal,
dan ini hujah di sini, hujah ini indexPath,
mengatakan apa yang berturut-turut saya masuk
Jika saya katakan indexPath.row ke sini
ini akan menjadi 0, maka ia akan menjadi 1, maka ia akan menjadi 2, dan ini adalah supaya saya tahu
apa sel Saya kini memaparkan.
Saya mahu untuk menetapkan teks sel menggunakan harta textLabel
untuk pergi ke dalam pelbagai buah-buahan saya dan mendapatkan
objek yang sepadan untuk setiap baris.
Jika ini adalah rentetan, saya kini menetapkan
harta teks kepada rentetan.
Saya boleh melakukan satu perkara lain.
Saya juga boleh mendaftarkan suatu pengendali acara pada setiap sel-sel,
jadi apabila saya ketuk setiap sel-sel
ini didSelectRowAtIndexPath, ini akan dipanggil bagi saya,
demikian hanya dengan menentukan ini, saya kini boleh mengendalikan apa yang berlaku
apabila anda mengetuk sel, dan sekali lagi, kita lulus di mana sel telah ditoreh
supaya kita boleh menggunakan semula ini pengendali acara yang sama untuk semua sel-sel kita.
>> Sekali lagi, ini adalah sesuatu IOS lakukan untuk saya.
Mari kita memaparkan popup menjengkelkan lain
yang hanya mengatakan anda memilih sesuatu yang mana sesuatu yang
akan menjadi objek baris.
Apabila saya menjalankan ini, saya akan mempunyai pandangan ini jadual bagus
dengan satu baris untuk setiap buah-buahan ini, dan jika saya ketik salah
ia memberitahu saya apa yang berlaku.
Masuk akal?
Mari kita membina sedikit lebih kompleks app,
seberapa banyak klik anda memilih tomato.
Bahagian baik tentang Lakaran papan cerita yang
ia bukan sahaja akan membantu kita skrin reka bentuk individu,
ia juga akan membantu kita mengikat bersama-sama aplikasi keseluruhan kami,
jadi aplikasi yang terakhir kita akan bangunan ini sukan baik pembaca berita,
dan sebagainya ia akan mempunyai skrin berganda, dan jadi saya sebenarnya boleh mewakili
setiap skrin berganda di papan cerita,
dan saya boleh mengezum keluar dan melihat aplikasi saya dari tahap yang tinggi.
>> Dalam usaha untuk mewujudkan dalam elemen baru papan cerita saya
ia adalah benar-benar mudah di dalam Pembina Interface.
Jika saya ingin menambah satu lagi skrin ini, sebagai contoh,
Saya mula-mula boleh mengezum keluar dengan zum secubit bahawa Apple suka begitu banyak,
dan turun di sini sebelum saya mencari butang
dan saya seret dan lepaskan butang
jika saya ingin membuat skrin baru saya sebenarnya boleh hanya seret dan lepaskan
pengawal pandangan keseluruhan, jadi jika saya memilih ini, tarik ia ke sini,
hey, ada skrin yang lain, dan sebagainya kini menggunakan fail ini storyboard yang sama
Saya boleh mempunyai semua skrin di dalam app saya, dan saya boleh zum keluar
dan melihat bagaimana mereka berinteraksi.
Ini tidak akan berinteraksi lagi.
Cara di mana ini 2 skrin berinteraksi anda mentakrifkan hubungan.
Anda pada asasnya boleh mengatakan skrin ini, apabila anda menekan butang ini,
Saya mahu anda untuk slaid ke skrin baru ini.
Ini bermakna terdapat jenis ini hubungan antara
skrin pertama dan skrin kedua.
Anda akan mempunyai asasnya merupakan anak panah dari butang itu ke skrin kedua
mengatakan bahawa apabila anda menekan butang ini yang mana saya mahu pergi.
Sama seperti kita kawalan diklik dan diseret untuk menentukan cawangan mereka
kita akan melakukan perkara yang sama untuk menentukan segues ini.
>> Kami akan melihat contoh untuk itu, dan sebelum kita sebenarnya peralihan
dari satu skrin ke satu IOS adalah baik cukup untuk memanggil kaedah ini
dipanggil prepareForSegue, dan ini adalah di mana kita boleh bermula
menghantar data dari satu aplikasi yang lain.
Dalam contoh ini kita berada kira-kira untuk melihat ia pada dasarnya akan membolehkan kita
untuk menapis pasukan besbol oleh liga dan bahagian.
Apabila saya memilih liga, sebagai contoh, saya mahu peralihan
ke skrin seterusnya saya di mana saya boleh memaparkan semua bahagian
dalam liga itu atau semua pasukan yang berbeza.
Saya perlu untuk menghantar ke skrin bahawa pasukan apa yang anda harus memaparkan.
Untuk melakukan bahawa saya akan mengambil kesempatan kaedah ini di sini.
>> Akhirnya, hanya satu titik rawak pada IOS.
Jika anda mahu menyimpan data ada perkara ini dipanggil data teras,
yang sebenarnya adalah jenis rumit untuk bekerja dengan.
Anda juga boleh menggunakan SQL untuk menyimpan data,
yang, sekali lagi, adalah baik tetapi jenis pada sebelah lebih rumit untuk bekerja dengan,
tetapi IOS juga menyokong perkara-perkara yang benar-benar sejuk dipanggil senarai harta,
dan senarai hartanah adalah hanya fail yang mewakili pasangan nilai utama.
Anda menentukan senarai kunci, dan anda mengatakan kunci ini akan menjadi array.
Kekunci ini akan menjadi rentetan, dan pada dasarnya apa-apa yang boleh anda lakukan
di JSON anda boleh lakukan di dalam senarai harta,
dan sebagainya ini benar-benar baik membolehkan kita untuk bekerja dengan beberapa data.
Sebagai contoh, saya mempunyai ini Teams.plist yang saya buat.
Saya telah mencipta fail plist baru, dan saya boleh mengesan.
Ini adalah kamus, ini adalah kamus, ini adalah rentetan,
dan sebagainya ini adalah perwakilan bagus grafik dokumen JSON
atau hanya satu set pasangan nilai utama,
dan sebagainya ini adalah data yang saya akan bekerja dengan dalam aplikasi saya.
>> Mari kita mula-mula datang ke sini. Kami mempunyai banyak fail sekarang.
Tetapi mari kita mula-mula datang ke sini untuk papan cerita.
Storyboard sini jika saya boleh mengezum keluar-
kita kini boleh melihat bahawa ini adalah aliran aplikasi saya.
Saya pertama kali akan bermula pada skrin ini.
Saya akan untuk menggerudi ke skrin ini,
dan saya akan untuk menggerudi ke skrin ini, dan kita boleh lihat di sini bahawa jika saya jenis
menggerakkan satu ini di sekeliling kita telah panah ini pergi dari sini ke sini,
dan cara saya menentukan arrow bahawa jika saya mengezum masuk sedikit,
dan jika saya datang ke pengawal pandangan ini,
dan di sini adalah sel, dan saya ingin mengatakan bahawa apabila anda mengetuk sel
Saya mahu anda untuk slaid ke skrin yang lain.
Saya hanya boleh tahan kawalan,
tatal atas sedikit, tahan kawalan, seret sel ini lebih dan melepaskan.
>> Dan di sini kita katakan apa peralihan yang anda mahu gunakan?
Adakah anda mahu menggunakan bahawa perkara slaid yang dipanggil menolak?
Adakah anda mahu slaid dari bawah?
Itu dipanggil ragaman.
Dan sekali saya klik salah satu daripada ini, ia akan menarik anak panah ini untuk saya,
dan ini bermakna bahawa saya telah benar-benar dikendalikan apa yang berlaku apabila saya tekan butang ini grafik.
Saya tidak menulis apa-apa kod sebenarnya slaid dari satu skrin untuk satu depan.
Saya ditakrifkan ini visual dalam Pembina Interface.
Jika saya klik pada anak panah ini, kita boleh melihat bahawa saya memberikan perkara ini nama.
Saya memanggilnya showDivisions, dan ini adalah supaya saya dapat tahu
apa peralihan adalah kira-kira untuk berlaku, dan kita akan melihat mengapa hanya dalam sec.
Itulah bagaimana saya telah berwayar sehingga skrin yang berbeza dalam apl saya.
Jika ini adalah butang, sebagai contoh, bukannya paparan jadual,
Saya dapat mengawal klik pada butang, seret ke skrin seterusnya,
dan itulah bagaimana saya boleh melakukan navigasi yang cara.
>> Benar-benar cepat, jika kita datang ke MasterViewController,
sekali lagi, kita hanya akan menentukan senarai perkara
yang akan dipaparkan dalam paparan jadual.
Di sini saya cakapkan Saya mahu anda mengambil fail plist,
dan saya mahu anda untuk memuatkan ke dalam kamus,
dan sekali anda mempunyai kamus yang, saya akan menjawab soalan-soalan yang sama sekali lagi.
Berikut adalah beberapa bahagian.
Satu, terdapat satu baris untuk setiap liga, dan teks setiap sel
harus sama ada yang pertama, liga pertama, liga kedua, dan sebagainya.
Akhir sekali, saya akan menggunakan kaedah ini bahawa kita hanya saw dipanggil prepareForSegue,
dan ini adalah kaedah yang akan dipecat apabila saya klik
pada salah satu dari orang-orang baris dan oleh itu mengaktifkan peralihan itu
bahawa saya telah menubuhkan dengan anak panah.
Ini mengatakan bahawa saya boleh mempunyai pelbagai
hubungan dari satu skrin yang lain.
Jika saya mempunyai 2 butang dan setiap butang akan membawa anda ke skrin yang berbeza
Saya akan mempunyai 2 segues, 1 untuk setiap butang.
Tetapi prepareForSegue ini, sekali lagi, akan diguna semula
bagi setiap hubungan yang berbeza, jadi ini bermakna bahawa saya perlu cara
mengenal pasti jika anda menekan butang pertama atau anda tekan butang kedua.
>> Ingat apabila saya memberikan yang segue nama ini showDivisions,
itulah bagaimana saya kini tahu bahawa ini adalah segue yang telah diaktifkan.
Apa yang saya mahu lakukan adalah saya mahu katakan
Saya mahu mengetahui apa yang saya hanya melanda,
dan sebagainya untuk mendapatkan bahawa, saya boleh katakan saya mahu indexPath bagi baris dipilih,
ingat indexPath hanya mengatakan di mana saya hanya klik,
dan kemudian saya ingin mengatakan saya mahu mengetahui di mana saya akan.
DestinationViewController ini, itulah harta segue itu.
Itulah skrin saya akan,
jadi saya tahu bahawa skrin saya akan dipanggil DivisionsViewController
kerana saya mencipta kelas itu,
dan jadi sekarang jika saya katakan d.divisions
Saya kini menetapkan harta pengawal pandangan saya kira-kira untuk pergi ke.
Ini adalah bagaimana saya menghantar data dari satu skrin ke skrin yang lain.
>> Hanya melihat DivisionsViewController ini
anda boleh lihat di sini bahawa dalam fail h
ada adalah bahawa bahagian harta, dan itulah apa yang saya pada dasarnya populating,
jadi itulah bagaimana saya tahu bahawa saya memaparkan bahagian yang sepadan dengan
liga yang saya klik, dan sekali lagi,
paparan jadual sebenar kelihatan hampir sama, hanya menjawab mereka
3 soalan mudah serta mengenal pasti
apa yang berlaku apabila anda bergerak ke skrin seterusnya.
Hanya beberapa perkara lain di sini.
Anda notis di bahagian atas di sini bahawa bukannya mengatakan # include
Saya kini mengatakan # mengimport.
Ini adalah hanya satu perkara Objektif-C.
Import adalah pada dasarnya versi yang lebih bagus daripada termasuk,
dan sebagai contoh, kita perlu tahu apa kelas ini,
jadi saya tidak boleh hanya berkata DivisionsViewController.
Jika kita tidak hashtag dalam standardio.c fail c.
pengkompil tidak mempunyai idea apa yang printf adalah.
Begitu juga, jika saya tidak mengimport DivisionsViewController
pengkompil benar-benar tidak mempunyai idea apa DivisionsViewController adalah.
Hanya pastikan bahawa dalam m fail yang berbeza anda. Anda pastikan untuk mengimport
h sepadan. fail supaya pengkompil tahu apa yang berlaku.
>> Akhir sekali, apakah Apple akhirnya tidak memaparkan beberapa data menggunakan pandangan web,
dan sebagainya pandangan web adalah objek di mana anda boleh membenamkan
pelayar web yang sedikit di dalam aplikasi anda.
Semua yang anda perlu lakukan adalah membekalkan URL ke pelayar web anda,
jadi saya mahu untuk pergi ke mlb.mlb.com,
dan ini adalah bagaimana saya boleh mengakses halaman rumah bagi setiap pasukan,
dan demikian oleh lulus dalam URL ini
pandangan web boleh memaparkan ini untuk saya, dan saya boleh melayari sekitar,
dan simulator adalah digunakan oleh yang satu.
Sekarang ini datang dari plist saya.
Jika saya klik ini ini juga datang dari plist saya, dan gelongsor ini telah dikendalikan
dengan menentukan mereka segues.
Saya klik ini dan satu lagi,
dan kini di sini adalah UIWebView saya, jadi hanya seperti yang
di sini adalah laman web untuk URL yang saya hanya tertanam,
dan saya tidak perlu untuk mengendalikan apa-apa gila.
Ini adalah bagaimana untuk memaparkan laman web.
Perkara seperti butang ini kembali di sini juga diberikan kepada saya
benar-benar secara percuma kerana saya telah ditakrifkan perhubungan ini menggunakan segues.
>> Apa-apa soalan? Yeah.
[Pelajar] Jadi apabila anda menggunakan alloc, anda tidak perlu kepada apa-apa yang percuma?
Tepat sekali, apabila anda memanggil alloc dan INIT anda tidak perlu untuk membebaskan.
IOS akan untuk mengendalikan semua itu untuk anda.
Ia adalah indah, dan anda tidak melanggar mana-mana kaedah. Yeah.
[Pelajar] Jika anda untuk memasukkan lebih banyak pasukan yang boleh dimuatkan pada skrin,
ia secara automatik akan mempunyai pilihan tatal, atau adalah sesuatu yang anda perlu menambah?
Tepat sekali, jika saya mempunyai lebih banyak pasukan, sebagai contoh, ia secara automatik akan mengendalikan
menatal bagi saya, dan semua prestasi kebimbangan
dengan meja besar juga dikendalikan sepenuhnya bagi saya.
>> Soalan-soalan lain?
Semua kod ini akan diberikan.
Kami jenis glossed lebih sedikit butir-butir yang lebih kecil,
tetapi perkara-perkara seperti menetapkan beberapa harta untuk paparan web
hanya perkara-perkara yang anda boleh mendapatkan dengan melayari dokumentasi Apple,
yang benar-benar, benar-benar baik dibentangkan.
Mereka mempunyai banyak aplikasi sampel dan contoh kelaziman
API yang berbeza, jadi pastinya meneliti mereka jika anda boleh.
Hanya beberapa pautan membantu anda mungkin mahu mengambil melihat.
Ini adalah beberapa panduan dokumentasi berguna.
URL adalah besar, jadi mereka dipendekkan.
Ini pertama adalah keseluruhan perpustakaan dokumentasi.
Terdapat bar carian sedikit, jadi jika anda mula menaip butang
ia akan mula memberikan anda semua maklumat tentang semua perkara yang anda boleh lakukan dengan butang.
Saya juga telah dimasukkan Lihat Jadual Pengaturcaraan Panduan.
Ia mengendalikan pemandangan meja di lebih terperinci,
bagaimana untuk melakukan perkara-perkara seperti dinamik menambah sel-sel atau sel-sel edit atau membuang mereka.
>> Terdapat banyak aplikasi sampel daripada Apple yang akan menunjukkan anda bagaimana untuk berbuat demikian,
dan akhirnya, ini yang terakhir adalah Garis Panduan Muka Manusia,
dan ini adalah pada dasarnya beberapa perbincangan komponen UI,
perkara-perkara seperti tidak membuat butang yang 4 piksel oleh 4 piksel.
Itulah idea yang buruk, dan perkara-perkara lain bahawa Apple mahu anda lakukan
untuk menggalakkan reka bentuk yang baik.
>> Sebarang soalan terakhir sebelum kita selesaikan?
Semua hak, pasti berasa bebas-Sign In Register New akan mempunyai label khas pada Bincangkan.
Kami akan mempunyai IOS satu, jadi pasti berasa bebas untuk menggunakan bahawa.
Jika anda mahu bekerja dengan rakan sekelas anda pada projek-projek
atau membantu memikirkan beberapa perkara IOS rawak
berasa bebas untuk menghantar e-mel kepada saya, dan pastinya meneliti semua talian kod kerana
hanya dalam kepentingan masa kita jenis glossed lebih lebih
berbutir halus butiran perkara.
Tetapi jika tidak, maka nasib baik pada projek IOS anda, dan saya berharap kita mempunyai
kemasukan besar aplikasi di App Store.
[CS50.TV]