>> Tianyu LIU: Hei, cum e merge toată lumea?
Și aceasta este iOS App Programarea de obiectiv seminar c.
Și numele meu este Tianyu Liu.
Sunt un junior Lowell chiar acum, concentrarea în informatică.
Deci, în acest seminar am O să te învețe baieti
un pic despre cum să faci o aplicație.
Yay, te excitat pentru ea.
>> Deci, înainte de a începe chiar de scufundări în partea de programare actuală,
hai să vorbim despre foarte repede de ce ar putea să vă doriți să construiască o aplicație iOS?
De ce este atât de minunat iOS?
Deci prima problemă, primul lucru care este destul de minunat pentru noi,
mai ales ca CS50 elev, este că iOS
folosește Obiectiv C. Ei bine, nu e un nou limbaj numit Swift,
dar noi nu vom utilizați ca în acest seminar.
Dacă sunteți interesat de Swift, acolo este un seminar independent despre asta.
Dar Obiectivul C este, în principiu un superset de C. Înțeles
că tot ceea ce folosească în C poate tradus în Obiectiv C
foarte ușor.
>> După cum s-ar putea vedea mai târziu, că într-adevăr există unele sintaxă foarte de bază, sunt
în esență exact la fel, C și Obiectiv C. Deci,
din moment ce s-au luat CS50 această departe, tu deja
Știi Obiectiv C, cel puțin 40%.
De asemenea, Apple are un foarte API robust pentru iOS.
Există o mulțime de foarte nebun lucruri pe care le puteți face cu ea.
Una dintre care este cineva de fapt a creat o aplicație iOS
pentru autoturisme control, care este destul de interesant.
Probabil un elicopter este mult mai interesant.
Dar asta e cât de puternic API-ul iOS poate fi.
>> Și, după cum s-ar putea avea a dat seama chiar acum,
preaplin stivă este, probabil, una dintre cele mai importante resurse on-line
disponibil pentru tine.
Și o veste bună, pentru fiecare singură problemă puteți eventual
cred că de dumneavoastră în timp ce construirea proiect final în Obiectiv C,
este probabil un răspuns stivă de preaplin.
E doar minunat.
Pe lângă asta, iOS este cu adevărat o platformă
în cazul în care se poate ajunge un mare audiență cu putin efort.
Nu e ca Android, în cazul în care totul e destul de fragmentat.
>> Totul iOS este unificat.
Și, atâta timp cât vă creați o aplicație pentru iPhone,
puteți foarte ușor port care la iPad, iPad mini, sau diferite dimensiuni iPhone.
Acestea sunt toate foarte convenabil.
Și e doar foarte bun pentru a impresiona prietenii tai.
Aveți posibilitatea să țineți doar un iPhone și spune prietenul tău hei,
acest lucru este app fac.
Puteți face asta pentru orice aplicații desktop, care este frumos.
>> Bine, acum hai efectiv minim în limba Obiectiv C.
Deci, de ce să nu începem cu unele sintaxă într-adevăr de bază.
Așa cum am menționat mai înainte Obiectiv C Este practic un superset de C.
Deci, o mulțime de sintaxă de bază sunt de fapt exact la fel.
Declararea unei variabile și adăugarea a două variabile împreună
este exact așa cum am făcut în Mario.
Nimic nou aici.
>> În mod similar, chiriașul de buclă și condiție este, de asemenea, la fel.
Puteți face o buclă la fel ca tine au făcut într-un Mario [neauzit].
Și poți să faci condiții la fel cum ceea ce
au făcut în seturi p anterioare.
Cu toate acestea, Objective C nu este complet C,
și nu există ceva care este un fel de ciudat cu privire la aceasta.
>> Prima fiind că, atunci când sunt faci programare C, te sun de obicei
includ și apoi un nume bibliotecă.
Dar, în Obiectiv C suni asta import.
Spunând: Practic funcționalitate, doar nume diferite.
Și siruri de caractere sunt de fapt un pic ciudat.
Puteti vedea că primul lucru care este un fel de ciudat
este că aveți o destul de weird-- sorry-- aveți un NS destul de ciudate
Înregistrează aici.
Și al doilea lucru asta e un fel de ciudat
este aveți o la semn înainte declararea de fapt șirul.
Deci, la semnul practic semnifică că un șir nu este doar un șir de caractere,
aceasta este de fapt un obiect.
Vom explica care mai târziu așa nu
panică dacă nu să înțeleagă ce înseamnă asta.
Și de imprimare pentru consolă este un pic diferite, deoarece în C numim printf,
dar în Obiectiv C numim [neauzit].
>> S-ar putea fi mirat ce este.
Aceasta este, în principiu printf, doar o altă limbă.
Exact aceeași utilizare, exact aceeași funcționalitate.
Ei bine, se pare că Obiectiv C de fapt
are o ns prefix în aproape totul, fiecare tip de date de bază,
NSString, nsarray, nsdictionary.
Motivul fiind acela ns înseamnă de fapt Pasul următor,
care este o companie care Steve Jobs a fondat,
care este o companie care Limba Objective C se naște.
Deci, aceasta este, în principiu tradiție.
Știu că e un pic ciudat, dar e Apple.
>> Deci, ceva care este chiar mai ciudat decât că este o declarație funcție.
Acest lucru este foarte diferit de ceea ce am a se vedea în C, pentru că aici de fapt
nu arata ca C mai.
Ceea ce here-- avea de fel acest lucru nu este un punct de glonț,
acesta este un semn minus.
Ai o paranteză semnul minus nule și apoi numele funcției.
Să spunem că, dacă ne-am au Bună ziua lume, atunci
tipul întoarcere ar fi nule pentru că ne vom întoarce nimic.
>> Ceea ce devine foarte ciudat este că atunci când ești
care au mai mult de un parametru trece într-o aceeași funcție care
va fi într-adevăr ciudat cum se arată aici.
Avem un nume metodă, chemat addInt la [inaudibil]
și ne trece un parametru.
Dar, după aceea, ne-am mai mult apel nume metodă cu.
Și, după ce vom trece cu al doilea parametru.
Acesta este de fapt un pic ciudat, Dar toate aceste declarații de funcții
urmează același model ca și acest lucru.
>> Avem un semn minus pentru a începe cu.
Semnul minus ar putea fi un semn plus uneori bazate pe ce fel de metodă
este.
Metoda este de fapt un alt nume pentru funcție.
Și am de gând să explică faptul că mai târziu, când
vorbim despre obiect Programarea orientată.
Ai specificați în primul rând revenirea tip paranteze interior,
după care vine numele metodei.
Te trece un parametru.
Și dacă aveți mai mulți parametri aveți nevoie pentru a extinde numele metodei
și, practic, scrie ceva mai mult aici.
>> Ar putea fi orice vrei.
În cazul nostru este cu.
Dar ai putea spune scop, sau sau sau ABC bar plin, ce vrei tu.
Și apoi, după care ești care trece parametru b.
Acesta este un adevărat ciudat convenție dar suntem
O să vezi de ce Apple a vrut pentru a face asta foarte repede.
Deci, cum te sun funcție?
Apelarea o funcție în Obiectiv C este de asemenea diferită de C.
>> De fapt, de asteptare o Funcția în Obiectiv C
este mai mult ca vorbesti cu cineva.
Aici avem de sine, care se numește un obiect.
Ești practic spui obiecții sine de a spune "Hello World!"
Acesta este modul de a apela funcția.
Un obiect și un nume metodă combinate între ele.
Și acest lucru este în cazul în care extinderea ciudat pentru denumirea metodei într-adevăr intră în joc.
>> Să ne uităm la al doilea exemplu.
Tocmai am definit o metoda numita addInt cu bla bla bla.
Deci, în acest caz, atunci când sunt de asteptare că [specific? Mesajul?] că va
sa arate ca auto addInt: 10 cu: 2.
Se pare că limba engleză.
Deși funcția Declarația funcție este ciudat,
punctul de Obiectiv lui C Metoda model declarații,
este că, atunci când sunt de asteptare funcția sau metoda
se va suna ca efectiv engleză.
Deci este foarte intuitiv odată ce te în ea.
>> Mai ales în acest caz, în cazul în care puteți practic
vedea că numele funcției este un fel de documentare în sine.
Nu aveți nevoie de nici o mai multe explicații pentru a vedea
exact ceea ce se întâmplă, ceea ce exact un parametru face.
Dincolo de faptul că, hai sa vorbim un pic bit despre programarea orientată obiect.
Programarea orientata obiect este unul dintre programarea fundamentală
tehnici sau modele care este folosit de Obiectiv C. Obiectiv C
se numește Objective C, nu C, pentru un motiv foarte bun.
>> Deci, înainte de a intra în C sintaxa Obiectiv,
Să-adevăr uita repede la exact ceea ce este un obiect.
Am făcut, probabil, ceva ca obiect înainte, care
este numit struct, atunci când sunt de punere în aplicare un copac sau o listă legată
sau [? încercați. ?] Deci, e practic ca o struct,
dar este mult mai puternic decât asta.
Un obiect are metode și proprietăți.
Metodele sunt practic funcții.
Practic funcționează ca un specifice unui anumit obiect.
>> Și proprietăți sunt de fapt câmp specificați în struct.
Deci, pentru fiecare obiect avem o proprietate
că are unele variabile care sunt specifice obiectului.
Și avem câteva funcții care sunt, de asemenea, specifice obiectului.
Și funcțiile sunt numite metode și variabilele sunt numite proprietăți.
E doar un nume fantezist.
În timp ce de fapt, fiecare vizualizare unică vezi în timp ce deschideți o aplicație iOS,
Să spunem că Twitter sau Facebook, fiecare vizualizare unică ce vezi este un obiect.
Și chiar întregul aplicația este un obiect pentru a începe cu.
Concept foarte interesant.
>> Și de ce vrem obiect Programarea orientată?
Deci, vă puteți imagina că, atunci când Programul devine destul de complicat.
Să spunem doar că atunci când ești de punere în aplicare tablă de șah,
logica este de gând să fie într-adevăr complicat.
Ai 36 diferite bucăți, astfel încât, dacă
vrea să scrie logica pentru toți 36 piese diferite în șah,
care va fi o mulțime de diferite functii si variabile.
E o mulțime de probleme.
Și probabil ai de gând să scrie o metodă diferită sau funcție diferită
pentru fiecare piesei de controla exact ceea ce fac ei.
>> Dar dacă faci orientat obiect programare, toate aceste piese
pot fi captate în un obiect unic.
Iar obiectul va avea unele comune proprietăți, cum ar fi ce fel de pătrundere
este?
Ce culoare are?
Cum se poate muta?
Și în acest fel aveți foarte mult simplificată logica ea.
Deci, este doar o modalitate foarte bună pentru a face programe complicate,
și relația ierarhică în cadrul programului, foarte simplu.
Așa cum vom vedea de ce foarte repede atunci când
suntem de fapt facem programming-- când suntem de fapt
face un cod S programare sesiune mai târziu.
>> Ei bine, în plus față de faptul că, Programarea orientată obiect
este doar o mulțime de distracție.
Ai pentru a proiecta propriul obiect.
Trebuie să proiecteze ceea ce face se arata ca de unul singur.
Nu există nici un răspuns corect la ea.
Și este absolut interesant.
Deci, în programarea orientată obiect, două concepte fundamentale
va fi de clasă și instanță.
O clasă este de fapt un șablon pentru obiect.
Și o instanță este în esență un obiect specific.
>> Să spunem că faci o prăjitură.
În acest caz, fiecare cookie ajungi de fapt cu
va fi un obiect.
Dar placa cookie îl utilizați pentru a coace toate cookie-urile vor fi o clasă.
O clasă este de fapt un șablon.
Iar instanța va fi unul specific obiect creat din acea clasă.
>> Și o instanță va fi creat pe baza declaratiei de clasă,
așa cum vom vedea în imagini ulterioare.
Deci, hai sa facem de fapt un adevărat exemplu rapid [neauzit].
Să presupunem că suntem de declarare un obiect pentru o pisica.
Obiectul trebuie să have-- clasa pisica ar trebui
au unele proprietăți și metode.
Ce fel de proprietati ar trebui să a clasă have-- ar trebui să aibă pisica?
>> De exemplu, culoare, vârstă și rasă, cei
va fi variabile care sunt specifice pentru fiecare pisica.
Iar acestea sunt unele lucruri pe care le folosim pentru a descrie o pisica.
Ce fel de metode, sau ce poate face o pisică?
Câteva exemple rapide ar fi Chase mouse-ul, mânca pește sau doar miau.
Aceasta este o foarte repede exemplu de clasă pisică.
Și într-adevăr un anumit obiect pisica va fi o pisica
în cazul în care specificăm culoare, vârsta și rasa.
>> În acest caz, obiectul nostru este nu mai este un clasă mai.
Am copiați șablonul de clasă și specificăm fiecare informații specifice
pentru că anumit obiect să fie independent.
Iar atunci când fac apel o metodă în interiorul unui obiect,
te sun doar miau pe obiect, care este pisica pe care tocmai ați creat-o.
>> Probabil te va tipări ceva de genul "Hello World!
Miau. "
Destul de drăguț.
Bine, hai să intra în unele detalii
și să vedem ce face exact asta traduce în fiind de programare iOS.
Deci, în iOS programarea fiecare clasă va fi implementat în două fișiere.
Un fișier este aici, care se numește interfața.
Un alt fișier este aici, care este numit de punere în aplicare.
>> De obicei interfața va avea extension.h
așa cum am văzut în biblioteci C.
Și fișier punere în aplicare este Va trebui extension.n.
E un fel de ciudat.
Dar .N înseamnă de fapt .c, nu există nici o diferență fundamentală între cele
doi.
Deci, în acest caz, putem vedea că suntem declararea interfață, Cat: obiect.
Care se numește moștenire.
Suntem practic moștenirea Clasa de pisică din clasa obiect.
Deci, fiecare proprietate și metoda care a fost definit anterior în clasa obiectului
vor fi definite în mod automat într-o clasă pisică, de asemenea.
>> În plus, noi definim culoare, rasa și vârsta, trei variabile.
Acest fapt arata ca ceva ce ați făcut înainte.
Se pare ca struct.
Aceasta este în esență sintaxa de declarare struct,
și că este total corect.
Și pentru că am menționat mai înainte, diferența o struct
și un obiect, una dintre cele mai diferențe fundamentale
este că un obiect are metodă, în timp ce o struct are doar variabile.
Deci, în plus față de proprietățile sau Variabilele care le-am creat pentru obiect,
specificăm o metodă.
>> Să spunem doar că aici avem două metode, una este miau,
altul este mouse-ul Chase.
Probabil Vrem să fie trecerea unui parametru bazat pe metoda noastră precedent
model declarație.
Probabil că vrea să fie trece printr-un șoarece.
Și veți dori, probabil, pentru a reveni un semnificant bool
Daca pisica ta are succes prins mouse-ul sau nu.
>> Aceasta este interfața, dar putem vedea că interfața de fapt
nu face nimic.
Doar spune un program de ceea ce exists-- ceea ce există în clasa pisică.
Deci, pentru ca Programul de a face ceva,
avem nevoie de fisierele de punere în aplicare.
Deci, aici, primul lucru pe care îl facem este evident noi de import interfata.
Dupa ce am de import interfata, vom defini metoda.
>> Să spunem doar că aici miau ar imprima doar din
"Salut Lume!" la consolă.
Și după punerea în aplicare fișier, suntem destul de mult de făcut.
Aceasta este de fapt o clasă declarație pentru o clasă.
Deci, acum, intrebarea devine, cum a face tu declara o variabilă?
Modul în care folosiți o clasă pentru a crea un obiect în obiectivul C este scris aici.
>> Ai specificați în primul rând că aceasta este un pointer pisică,
pentru că fiecare obiect în obiectivul C este în cele din urmă implementat ca un pointer.
Și te sun clasa, le numim ca alloc, care este de fapt malloc,
spune sistemul de operare pe care îl nevoie de spațiu de memorie pentru acest obiect.
După ce că aveți un obiect deja și pe care tocmai l inițializa.
Acesta este doar o convenție.
Știu că e un pic ciudat, dar aceasta este de fapt modul în care Apple a face lucrurile.
>> Alocarea proprietăți este de fapt destul de simplu.
Este foarte asemănător cu ce faci atunci când
te atribuirea unele specifice câmp interiorul struct.
Trebuie doar variabila numele, numele de proprietate,
și să alocați o valoare specifică.
Și de asteptare o metodă este foarte asemănătoare.
Asteptare o metoda este de fapt ce vorbesc despre
pentru apelarea orice metodă în Obiectiv C.
>> Ești trece un obiect, în acest caz va fi myCat,
si tu esti trece numele metodei.
Ca și cum vorbești la obiect, myCat, că ar trebui să miau.
E destul de interesant.
După aceea, există o model de design mai important
că trebuie să vorbim despre înainte de a ajunge la cod efectiv S.
Acest model de proiectare se numește determinate de un eveniment de programare.
Aceasta este, de asemenea, probabil unul dintre cele mai idei fundamentale în programare iOS.
>> Deci, probabil că nu știu ce anume este programarea condus caz,
dar nu e chiar atât de înfricoșător.
Ei bine, de fapt, ai deja făcut asta înainte.
Aceasta este una dintre liniile de probabil ați deja scris în ultimul [inaudibil]
de CS50, google.maps.event.addListener (marker,
"Faceți clic pe", funcția () {}) :.
Prin apel această linie sunteți spune, în esență, calculatorul
că ori de câte ori evenimentul numit "Click" se întâmplă pe încadrare,
utilizați această funcție.
>> Acest lucru este foarte diferit de ceea ce faci în mario.c.
În mario.c rulați doar programul odată, vă oferă o putere,
și ați terminat.
Acestea sunt un fel de unul programe împușcat.
Programe condus evenimente sunt foarte, foarte diferit.
Să ne imaginăm, dacă Facebook este un unul Programul lovitura asta nu e chiar bine.
Tu du-te la Facebook o dată și se face.
Acesta vă oferă unele ieșire și niciodată nu-l am întors.
N-ai luat ceva mai mult.
>> Deci aici, mai ales modelul folosit este
determinate de un eveniment, astfel încât fiecare funcție va
fi capturată bazat pe ceea ce eveniment sa întâmplat.
De exemplu, dacă avem un buton și noi specificați
că ori de câte ori acest buton este apasat, apela funcția numit "Hello World!"
In acest fel putem într-adevăr gestiona logica funcție
flux într-un mod extrem de flexibil.
Utilizatorul poate face sau apela o funcție care a fost deja numit.
Este complet bazat pe ceea ce fac utilizatorii.
>> Deci, putem vedea că acest lucru este de fapt, mult mai bine decât mario.c.
Și o veste bună este că ea e de fapt, nu un concept nou.
Voi ați făcut deja că în ultima problema stabilit.
Deci, în Obiectiv C, există trei diagrame diferite
pentru programarea condus eveniment.
Prima diagrama este numita acțiune țintă,
în cazul în care va obligati un buton presa cu unele functii.
Să spunem că, ori de câte ori faceți clic pe unii buton, te sun unele functii.
Acest lucru este acțiune obiectiv foarte simplu.
>> Al doilea este de fapt cel mai dificil,
se numește delegare pe protocol.
Vom explica că în detaliu mai târziu.
Și a treia cale este de notificare.
Acest lucru nu este de fapt foarte important în ceea ce
așa cum suntem în cauză, deoarece sansa care ai de gând să utilizați notificare
în proiectul dumneavoastră final este destul de scăzut.
Deci, vom sări peste acea parte.
>> Și am de gând să se scufunde în delegație la protocol.
Deci, ce este exact un protocol?
Sau ce anume este un delegație?
Hai sa vorbim despre protocol pentru a începe cu.
Protocoalele nu sunt altceva decât evenimente.
Dar aceste evenimente sunt date pentru tu de Apple pentru a începe cu.
De exemplu, eu nu sunt complet sigur câți dintre voi
voi folosi originale de la Apple app-mail sau contact,
dar de fiecare dată în care se derulează masă și apăsați celula specific
pe masa, care este un eveniment.
>> Și dacă vrei să faci acel eveniment de le
este de fapt un pic mai greu.
Deci, Apple a dat că, chiar la tine astfel încât să puteți pur și simplu utiliza direct
evenimentul de a face ceva pe cont propriu.
Protocoalele sunt de fapt într-adevăr, într-adevăr utilizate pe scară largă
în Obiectiv C. Ei bine, în De fapt, fiecare aplicație
are ceva prins app delegat.
In interiorul delicat este tot al protocoale pentru încărcarea aplicației.
>> Să spunem că nu există un eveniment de aplicație a făcut sarcină.
Deci, ce trebuie să se întâmple după ce ați a creat o aplicație, după ce deschideți aplicația,
după ce închideți aplicația, sau după ai pus iPhone de a dormi.
Acestea sunt toate evenimentele care le are a fost deja dat de tine.
Și inițial în interiorul acestor particule nu va fi nici de punere în aplicare.
Apple tocmai ți-a spus că această funcție se va întâmpla atunci când un eveniment se întâmplă,
dar ce faci cu asta Funcția este complet până la tine.
>> Delegarea este, în principiu spune clasa
că ar trebui să se ocupe de aceste protocoale.
E un pic confuz, dar va fi
mult mai clar atunci când facem codurile s în acțiune.
Delegația la protocol este de fapt o mecanism extrem de robust, în sensul
că dacă facem delegație pentru o anumită clasă,
ne putem descurca, în esență, toate tipurile de evenimente
folosind orice clasă avem, instrument foarte convenabil.
>> Deci, un exemplu rapid pentru delegare pe protocol
va fi ceea ce tocmai am vorbit despre.
Acest protocol specific se numește tableview [inaudibil] selectați rol
la [? index?] [? dribleze. ?] Deci o eveniment care ar fi prins atunci când
apăsați de fapt pe un anumit celulă în tableview ta,
Să spunem că în e-mail-ul sau în app de contact.
>> În interiorul unei funcții nu a existat face inițial nimic.
Funcția nu face nimic în mod implicit.
Dar puteți specifica ceea ce face funcția,
având în vedere ce vrei din aplicația.
Instrument foarte convenabil.
Și cu toate că fiind spuse, eu practic
acopere unele sintaxă foarte de bază și Conceptul fundamental pentru Objective C
programare, și putem face ceva cod s.
Mult mai interesant.
Deci, s cod este de fapt o pic copleșitoare
atunci când îl deschideți pentru prima dată.
>> Un nota rapid, așa că, dacă vrei sa faci dezvoltare iOS,
Am foarte recomandăm să aveți un Mac.
Pentru că faci dezvoltare iOS pe Windows este foarte, foarte greu.
E greu de realizat, dar e foarte greu.
Și tu faci siguranta nu doriți să utilizați g edita.
Deci, în s cod avem mai multe domenii diferite.
Când deschideți prima dată s cod veți vedea o zonă de navigare,
care, practic, vă arată tot fișierele care se află în proiectul curent.
>> Ai o zonă bara de instrumente, care este, în principiu de gestionare opinii,
sau unele puțin rapid Instrumente despre S cod în sine.
Și aceasta este zona real editor.
Aceasta zona este foarte asemănătoare g edita, dar mult mai bine decât g edita.
Și în acest domeniu drept, este denumit în zona de utilitate.
Zona devine foarte la îndemână atunci când creați interfață sau specificând
unele setări rapide pentru aplicația.
>> Și zona de final este de depanare.
Această zonă conține consola.
Deci, ori de câte ori ai spus printf, sau NSLog în cazul nostru,
toate rezultatele sunt va fi imprimat aici.
În regulă?
Cred că putem face foarte repede un exemplu de programare iOS.
Și să deschidă, de fapt cod sus s.
Deci, de fiecare dată când deschideți cod sus s, e O să apară ceva de genul asta.
O să te întreb ce vreți să faceți?
Nu doriți să începeți ceva aleatoriu, un loc de joacă, practic te
poate testa doar cod fără de fapt, angajându-se să orice aplicatie.
>> Nu doriți să creați un nou proiect?
Sau vrei să continuați lucreaza la proiect existent?
În cazul nostru vom pentru a crea un nou proiect.
Deci, e foarte frumos, e Codul are de fapt deja
dat niște șabloane pentru crearea de obiecte.
Dacă vrei să faci un joc, s cod de fapt, are un șablon joc pentru tine,
are aplicații bazate pe pagină, aplicație bazată pe tab.
În acest caz, vom de a face ceva foarte simplu,
și vom utiliza un cerere unică de vedere.
>> După aceea doar ceea ce vrei pentru a apela produsul dvs., și ceea ce este numele tău,
ceea ce este de identificare ta, și ce limbă folosiți.
Aici nu vrem să verifica cu ajutorul Core Data.
Core Data este de fapt un databasing iOS.
Dacă veți face Core Data, s Codul se va defini
o mulțime clase mai complicate pentru tine.
Deci, pentru a păstra totul simplu, suntem doar de gând să se descurce fără bază de date
chiar acum.
>> Problema vom fi utilizați este that-- problema
vom crea este că noi practic vrea să importe Mario de la C
pentru o aplicație iOS.
Deci, haideți să numim că Mario-iOS.
Desigur specificați ceea ce doresc să pună în proiectul dumneavoastră.
Și acolo mergem.
>> Deci, aceasta este un pic copleșitoare, dar aceasta este de fapt
ceea ce tocmai am văzut pe slide-uri.
Și prima zona vedem chiar acum este de fapt configurație proiect.
Deci, tot ceea ce vrei să faci proiect, ce fel de aparat,
hai să spunem ce fel de dispozitiv vrei aplicația să apară pe?
Este iPhone, iPad sau universal?
Deci orientare dispozitiv, toate aceste lucruri.
Nu este foarte important, dar ar putea fi, dar acest lucru
este un loc unde vă configurați proiectul dumneavoastră dacă tu de fapt
doriți să implementați la magazinul Apple.
>> Bine, să ne uităm la ceva care este în interiorul codul nostru.
Să mergem prin navigatorul de fișiere.
Și acestea sunt toate fișierele care deja a venit cu modelul, foarte frumos.
Așa că atunci când am clic pe unul dintre ei asta este ceea ce pare.
Foarte similar cu g edita.
Dar puteți vedea că evidențierea sintaxei este, probabil,
un pic mai frumos.
Și este de fapt mult mai mult puternic decât g de editare.
Și poți complet auto o mulțime de lucruri pentru tine,
așa cum vom vedea foarte repede.
>> Să deschide zona de depanare, de asemenea.
Bine, așa cum se poate vedea, consola este chiar aici.
Aceasta este ceea ce ai de gând pentru a vedea unde ești în printf sau nsloging ceva.
Deci, fără alte formalități, să de fapt compila aplicația și să vedem ce se întâmplă.
O caracteristică esențială pentru s cod, este faptul că cod s
vine cu un simulator de iPhone.
Deci, nu aveți nevoie pentru a avea o iPhone pentru a încerca proiectul dumneavoastră,
s cod poate simula că pentru voi, așa cum se poate vedea chiar acum.
>> E destul de frumos.
Durează un pic bit de timp pentru a compila
și, practic ne-am o aplicație gol,
care de fapt nu face nimic.
Dar compilează.
E destul de minunat.
E mult mai bine decât C, nu?
Bine, atunci hai încercați să adăugați ceva.
Un fișier care este un pic ciudat aici este numit storyboard.
Aceasta este de fapt o mare, facilitate minunat pentru e cod.
Pentru că în s cod, puteți de fapt trage și fixați elementele pe interfața
și se va arăta în mod direct în sus.
Să încercăm asta.
>> Am picătură o etichetă aici, "Hello World !!!"
Putem centru asta.
Destul de rece.
Acum să rulați acest oprire simulare.
Aici avem "Hello World !!!"
Noi nici măcar nu face nici codificare inca.
Ce naiba se întâmplă?
Acest lucru este cât de puternic Interfata Builder poate fi.
Cineva a spus chiar că probabil poți doar
completeze o aplicație fără scriere probabil o mie de linii de cod
doar prin utilizarea Builder Interface.
Dar probabil că nu e cel mai bun mod de a face acest lucru.
>> Acum, hai, de fapt trecem la codificare.
Deci, structura de fișier este de fapt foarte interesant
pentru că, așa cum puteți vedea, există este nici o funcție principală nicăieri.
Vezi?
Așa cum am menționat mai înainte, puteți vedea că acest
este un fișier de punere în aplicare pentru o anumită clasă.
Dar nu există nici nicăieri principal.
Deci, în cazul în care este principalul?
De fapt, există o principală, dar principal este, de fapt ascuns de la tine.
Principal este aici.
Asta pare familiar.
>> Deci, practic ce iOS este de a face în interiorul principal
este că ori de câte ori este principala numita, care este de fapt
ori de câte ori aplicația este executat, ea creeaza un obiect numit AppDelegate.
Așa cum am menționat mai înainte, întregul aplicatie este de fapt un obiect de la sine.
Deci, în acest fel, practic app iOS spune compilatorului
că bine, am de gând să creeze un produs numit AppDelegate,
și care va fi aplicația mea.
Deci, aveți nevoie pentru a merge prin care AppDelegate
si vezi ce face tipul ăla.
Treaba mea este făcut pentru mine.
>> Și în AppDelegate puteți vedea că există unele funcții într-adevăr ciudat,
bine, de fapt metode, că Apple a ți-a dat deja.
Ce sunt acestea?
Acestea sunt de fapt doar protocoale că vorbeam despre.
Deci, acestea sunt evenimente care Apple a te-a dat pentru a începe cu.
Nu este nimic în unele funcțiilor chiar acum,
dar dacă vrem să inițializa ceva pentru aplicația noastră
înainte de a intra în afișarea orice punct de vedere, noi facem asta aici.
>> Puteți citi doar numele și cred Evenimentul este de fapt foarte clar.
Deci, acum principala a creat un obiect de AppDelegate.
Și ce AppDelegate va face este, de fapt, de asemenea, ascuns de la tine.
AppDelegate va incepe încărcarea stocul ViewController.
Deci, se practic de gând să înceapă încărcare de până toate punctele de vedere pe care le au
și chiar face ecranul bazat pe ierarhie.
>> Deci, în acest caz, avem doar o vedere, care este aici.
Așadar, acesta este singurul punct de vedere care va fi numit.
Logica ViewController este chiar aici.
Acesta este codul care de fapt controleaza punctul de vedere doar am văzut.
Bine, hai să facem ceva aici.
Deci, viewDidLoad sună ca un eveniment, când, de fapt, aceasta este, de asemenea, un delegat,
aceasta este, de asemenea, un protocol.
>> Deci, indiferent de punctul de vedere este încărcat, tot în interiorul funcției
se va numi.
În acest caz, ar trebui să vedem "Hello Tianyu! ", Dacă vom rula programul.
Se face un pic mai lent compilarea fișierelor storyboard.
Ei bine, într-adevăr, noi vedem o ieșire pentru el.
E destul de cool.
Acum, hai fapt, nu Mario.
Am de gând să se definească funcționează foarte repede.
marioWithLevels: Rezultatele (int) de nivel.
>> Bine, aceasta este de fapt Awesome facilitate de completare auto s cod.
Deci, atunci când scrie pentru și tastați intra, le-a dat deja modelul
pentru tine, care este destul de rece.
Asta ar trebui să arate într-adevăr familiar pentru voi.
Ne pare rău, asta e vina mea.
Bine, rece.
Această logică ar trebui să arate într-adevăr familiar pentru voi, mai ales doar Mario.
>> Dar noi va tipări acum la consola de fiecare dată,
pentru că vrem să păstrăm într-un fel urmări ceea ce se imprimă.
Mergem de utilizat Rezultate cumva mai târziu,
pentru a afișa imprimare în rezultat pentru utilizator.
Deci, în loc suntem doar nslogging totul,
care suntem stocarea tot într-un rezultat funcție de apel,
dar logica este exact la fel.
După ce l, ne-am duce la doar imprima rezultatele noastre.
>> Și aici, în loc de imprimarea mele nume, vom apela o funcție.
Să vedem ce se întâmplă.
Hopa, evident.
Avem un frumos mic piramidă aici.
Aceasta este de fapt C, suntem doar manipularea unde te sun o funcție
și cum o funcție arata.
Nu e nimic diferit.
Dar aceasta este de fapt nu foarte interesant aici,
pentru că noi nu s-au vazut nimic din aplicația iPhone.
>> Deci, dacă aveți de fapt un iPhone app-- dacă aveți de fapt Mario iOS dreapta
acum, nu te duci a vedea ceva care
are nimic de-a face cu Mario, deoarece toate aceste rezultate într-o consolă
sunt ascunse de la un utilizator.
Aceasta este ceea ce vezi, care este "Hello World !!!"
Nu e bun.
Acum să încercăm să facem utilizator vedea exact ceea ce ne imprimarea.
Deci, nu avem nevoie să mai eticheta.
Să încercăm și dau seama ceva altceva care ar putea fi util.
>> Nu este de fapt una element care se numește
câmp de text, care ar putea fi foarte util pentru noi.
Se afișează de fapt o regiune de text care poate fi editat.
Așa că pare foarte util.
Acum, să trageți și plasați-l.
Wow, avem o vedere de text în opinia noastră, într-adevăr de lux.
Asta e un pic prea mare.
Să facem o mică.
Pune-l în centru.
Fă o mai mică, de asemenea.
>> Acum avem o vedere de text, pe care am putea fi folosit pentru a afișa rezultatul final.
Dar acum e cu siguranta nu va merge
pentru că nu există no-- ViewController ne-am
definit nu știe că există o vedere de text acolo.
Deci, avem nevoie de un fel link vizualizare text tocmai am
create cu clasa care a venit deja cu noi.
>> Modul în care facem asta este de fapt într-adevăr magic.
Deci, deschide storyboard.
Există o special [inaudibil] numit [? asistent?] [neauzit].
Când faceți clic pe asta, e va deschide două fișiere.
Una este o clasă, iar celălalt este o vedere corespunzătoare pentru aceasta.
E foarte, foarte util.
Și hai să trece prin fișierul .h.
Controlul, aici [inaudibil] logică.
Controlul Apăsați și trageți vedere text în declarația.
Vom numi asta outputView.
Conectează-te.
Deci, aici ne-am declarat un nou proprietate de clasa noastră ViewController.
Iar noua proprietate este doar punctul de vedere textului
am creat în clădire de interfață.
Deci, în acest fel am putea acces toate datele
și manipula tot ceea ce este în interiorul ecranul de ieșire, care este minunat.
>> Deci, în codul nostru actual, hai sa facem ceva cu ea.
Deci, de data aceasta, când suntem ca tipărire în rezultatul final pentru Mario,
suntem în care nu logare nimic.
Adică am putea păstra declarația de logare.
Pe lângă asta, trimite citire ne-am
creat la ecranul de ieșire, care este un UI TextView doar am creat.
Acum, să vedem ce se întâmplă.
Wow.
Avem o piramidă în aplicația chiar acum.
>> Astfel, utilizatorul poate vedea producția noastră pentru că am copiat de ieșire din codul nostru
la interfața noastră.
E destul de bine.
Nu e de fapt că Derby pentru că noi can--
Toate aplicația este de a face este arătând o piramidă pentru tine,
și nu există nimic care le puteți face despre el.
Nu e deosebit de interesant.
Deci, acum hai să facem un buton că va șterge punctele de vedere.
Se pare că un buton va fi de ajutor.
Drag and drop.
Button unul.
Button doi.
>> Așa că atunci când am faceți clic pe stânga buton, ecranul ar trebui să dispară.
Nu ar trebui să fie nimic pe ecran.
Și când am faceți clic pe butonul din dreapta, Mario,
vizualizarea va apărea din nou.
Deci, în acest fel vom face, de asemenea, Chestii magie, de control și trageți
la declarația de clasa în director-- asistent
în vizualizatorul asistent.
În acest caz avem de a specifica că ar trebui să fie o acțiune.
clearMario.
>> Deci, aici am creat deja o acțiune numită clearMario,
care este metoda care va fi numit ori de câte ori apăsați butonul limpede.
Deci, în fapt codul nostru, hai să pune textul de ieșire și punctul de vedere ieșire
în nimic, și în acest fel se va par a fi clare.
În plus, sa cream o altă metodă numită runMario.
Oh, scuze, că nu ar trebui să fie o proprietate.
Bine, asta ar trebui să fie o acțiune la fel de bine.
>> Și când această funcție este numit, doar vom rula Mario zece.
Sperăm că va fi bine.
Are compila?
Da.
Acum avem un punct de vedere.
Avem o ieșire.
Și hai să vedem ce se întâmplă.
Asta a plecat.
E din nou.
Deci, aici am specificat ce fel de funcție
se va numi atunci când am tastați în ceva,
când am apăsați un buton specific.
Acesta este în esență sistem acțiune țintă
pentru un eveniment Programarea în Obiectiv C.
>> Pe lângă asta, nu e foarte interesant
pentru că nu putem schimba cu adevărat cât de mare va fi piramidei,
deci, probabil, vrem să cumva obține o intrare de la utilizator
și de a schimba înălțimea piramidă bazat pe ceea ce au de ieșire.
Deci, vom face asta.
Deci, de data aceasta, când numim runMario, noi nu numim doar pe Mario direct.
Denumirea Asta e.
>> Delegat.
Acest lucru este foarte interesant.
Ce este un delegat?
Am de gând să pună sine aici.
Și vom vedea ce inseamna asta mai târziu.
Deci, aici am creat practic un exemplu specific numit unei alerte de UI
vedere.
Un punct de vedere alertă UI este practic ce vrei
a se vedea de fiecare data ceva POP și vă cere de intrare,
ca ce se va întâmpla atunci când sunteți încercarea să cumpere ceva pe un App Store.
>> În plus, după ce a crea o, vom arăta doar alerta.
Bine, hai să rapid încercare va fi că munca sau nu.
Asta e foarte misto.
Acum, haideți să creeze un efectiv câmp de introducere pentru semnalarea UI.
Acesta este modul în care facem asta.
Și ar trebui să avem o vedere de intrare pentru alerta.
Foarte misto.
Să spunem doar 10.
>> Nu face nimic dreapta acum că apelul efectiv
nu s-au schimbat pentru executarea mario.
Deci, aceasta a devenit un pic pic cam ciudat pentru că ori de câte ori
am apăsați un buton jos, ori de câte ori apăsați un buton în ecranul de alertă,
ceva trebuie să se întâmple, dar aceasta nu se întâmplă.
Cum prind?
Cum știm că un utilizator a respins o vedere de alertă
și a intrat deja un număr, pentru că chiar acum nimic nu se intampla de fapt.
>> Ei bine, ați ghicit corect, delegare.
Deci, în plus față de toate aceste declarații,
avem nevoie pentru a adăuga o nouă delegație la a numit-o UI vedere alertă delegat.
Așa că fiecare interacțiune sau eveniment
că vom avea cu scopul de alertă UI
va fi manipulat de clasa noastră, de asemenea.
>> Deci, în plus față de faptul că, va fi Alertă pe butonul vedere faceți clic pe la index.
Acest lucru este atins.
Deci, în acest caz, avem already-- așa că avem
aflat un protocol care se va ocupa de evenimentul când
facem clic pe butonul Done pe ecranul de alertă.
Deci, de fiecare dată când respingerea vedere alertă, aceasta ar trebui să se întâmple.
Lasă-mă să-l testeze foarte repede.
Ei bine, într-adevăr, am ajuns aici.
>> Deci, aici, ceea ce nu se va de fapt obține este de fapt
obține the-- Așa că vrem să ieșim textul pe care o avem în prealabil
a intrat în ecranul de alertă.
Și se bazează pe text, suntem va fi afisata Mario.
Acest lucru dovedește foarte repede în cazul în care chiar funcționează sau nu.
Deci, în acest caz, dacă ne-am de intrare, să zicem, 10, ar trebui să vedem 10.
>> Foarte bine, avem un număr de aici.
E destul de bine.
Acum, ultimul pas va be-- So Ultima etapă trebuie să facem chiar acum
este doar o sun Mario cu Nivelul bazează pe intrările
care le-am pus în vedere de alertă.
Deci, avem nevoie pentru a converti acest șir în iOS.
Overflow Static este foarte minunat.
Și apoi numim doar de sine valoare marioWithLevels.
Să vedem va ca locul de muncă sau nu de fapt.
>> Ne dat deja o piramidă.
Să încercăm să schimbe înălțimea.
Asta chiar funcționează.
E destul de cool.
Așa că acum poți doar intrare orice valoare doriti.
Să spunem doar că patru.
Asta e destul de minunat.
Deci, aceasta este, în principiu un exemplu foarte repede
pentru modul de a crea un proiect în s cod și cum să sârmă foarte repede în sus
unele evenimente și funcții foarte simplu.
>> Astfel, sursa se întâmplă care urmează să fie pus online mai târziu.
Deci, dacă sunteți interesat în modul în care funcționează iOS Mario,
Am de gând să pună exact la fel Proiecte pe site-ul CS50 mai târziu.
Suntem practic terminat cu vară, iar înainte de a ne duce la
Vreau doar să vă punctul voi să unele resurse într-adevăr minunat că
sunt disponibile on-line.
>> Evident documentația Apple a va fi de foarte mare ajutor.
Dar, în plus, am ales recomanda patru surse, cod de școală,
casă în copac, AppCoda și WWDC video.
Școală cod și casa copac sunt două site-uri on-line Educația,
care se concentrează în mod specific pe inginerie software.
Mai ales pentru cod școală, ei au tutorial foarte bine pe iOS.
>> Acesta este un exemplu foarte rapid pentru el.
Ei creează de fapt un adevărat cute-- uita-te la acest mic drăguț iPhone
Omule acolo, e destul de minunat.
Iar modul în care explică Obiectiv C sintaxa este perfect limpede.
Casa din copac este același.
Și AppCoda este un forum.
Este de fapt un blog care a fost rulat de un obiectiv C într-adevăr cu experiență
programator.
Și toate aceste tutoriale din AppCoda sunt destul de scurt și ușor de implementat,
foarte recomandat.
>> Și dacă sunteți un dezvoltator, cu siguranta merge verifica
cum videoclipuri WWDC unde puteți afla despre cele mai recente programare iOS
tehnici, API-uri și biblioteci.
Așa că este destul de mult aceasta pentru seminar.
Mulțumesc foarte mult.
Și sper că te distrezi crea propria aplicație iOS.