>> TIANYU Liu: Hé, milyen Hogy megy mindenki?
És ez az iOS App programozási objektív c szemináriumon.
És a nevem Tianyu Liu.
Én egy Lowell junior most, koncentrálva a számítástechnikában.
Tehát ezen a szemináriumon vagyok tanítani fog titeket
egy kicsit arról, hogyan lehet egy app.
Hurrá, izgatott érte.
>> Szóval mielőtt még kezdetét búvárkodás a tényleges programozási oldalról,
nézzük csak nagyon gyorsan beszélnek miért is szeretne építeni egy iOS app?
Miért iOS olyan félelmetes?
Így az első probléma, az első dolog, ami elég félelmetes számunkra,
különösen a CS50 diák, hogy iOS
használja Objective C Nos, van Az új nyelv az úgynevezett Swift,
de mi nem fogunk használja, hogy ezen a szemináriumon.
Ha érdekel a Swift, ott egy független szemináriumot erről.
De Objective C alapvetően felülbírálja a C. Meaning
hogy mindent, amit használni C lefordítják Objective C
nagyon könnyen.
>> Amint lehet látni fogjuk, hogy valóban van néhány nagyon alapvető szintaxis, a
alapvetően pontosan ugyanaz, C és Objective C Szóval,
hiszen szedett CS50 up idáig, akkor már
tudják célkitűzés C, legalább 40%.
Továbbá, az Apple egy nagyon robosztus API for iOS.
Van egy csomó igazán őrült dolog, amit tehetünk vele.
Amelyek közül az egyik, hogy valaki valóban létre egy iOS app
vezérlésére autók, amelyek Ez elég érdekes.
Valószínűleg egy helikopter sokkal izgalmasabb.
De ez milyen erős Az iOS API lehet.
>> És lehet, hogy kitalálta, most,
A veremtúlcsordulás valószínűleg az egyik a legfontosabb online forrásokat
áll az Ön rendelkezésére.
És jó hír, hogy minden Egyetlen probléma akkor esetleg
gondolni építése közben A projekt végső célkitűzés C,
akkor nagy az esélye egy verem túlcsordulás választ.
Ez egyszerűen fantasztikus.
Ezen felül, iOS tényleg egy platform
ahol elérheti a hatalmas közönséget kevés erőfeszítéssel.
Ez nem olyan, Android, ahol mindent csinos töredezett.
>> Minden iOS egységes.
És mindaddig, amíg létre egy app iPhone,
akkor nagyon könnyen port, hogy a iPad, iPad mini, vagy különböző iPhone méretben.
Ezek mind nagyon kényelmes.
És ez csak igazán jó A lenyűgöző barátaival.
Akkor csak tartsa az iPhone és mondd el a barátja hé,
ez az alkalmazás teszek.
Meg tudod csinálni, hogy bármilyen desktop alkalmazásokat, ami szép és jó.
>> Rendben, most nézzük valóban kap a nyelv Objective C
Akkor miért nem kezdjük néhány igazán alapvető szintaxis.
Ahogy korábban említettem Cél C Ez alapvetően egy részhalmaza C.
Szóval egy csomó alapvető szintaxis tulajdonképpen pontosan ugyanaz.
Nyilvánító változó, hozzátéve, két változó
Pontosan ahogy tettük azt a Mario.
Itt semmi új.
>> Hasonlóképpen, az albérlő a hurok és feltétel is ugyanaz.
Meg tudod csinálni egy ciklusban csak úgy, mint már volt egy Mario [hallhatatlan].
És meg tudod csinálni feltételek mint amit
már ezzel a korábbi p készletek.
Azonban Objective C nem teljesen C,
és van valami, hogy a furcsa róla.
>> Az első az, hogy ha Ennek C programozási, akkor általában hívni
közé, majd a könyvtár nevét.
De Objective C hívod, hogy import.
Alapvetően mondván funkcionalitás, csak más nevek.
És a húrok valójában egy kicsit furcsa.
Láthatjuk, hogy az első dolog, ami furcsa
az, hogy van egy szép weird-- sorry-- van egy elég furcsa NS
aláírja ide.
A másik dolog, ez furcsa
van, hogy van egy jel előtt valóban kimondja a húr.
Tehát a kukac alapvetően azt jelenti, Olyan karakterlánc nem csak a húr,
ez valójában egy tárgy.
Megyünk megmagyarázni hogy később, így nem
pánik, ha nem megérteni, hogy mit jelent.
És a nyomtatási konzol egy kicsit más, mert a C hívjuk printf,
de Objective C nevezünk [hallhatatlan].
>> Lehet, hogy vajon mi az.
Ez alapvetően printf, csak egy másik nyelven.
Pontosan ugyanez használat, pontosan ugyanazt a funkcionalitást.
Kiderült, hogy a Objective C ténylegesen
van egy ns prefixre szinte mindent, minden alapadatok típusú,
NSString, nsarray, nsdictionary.
Az ok pedig az, hogy ns valóban kiemelkedik a következő lépés,
ami olyan cég, amely Steve Jobs alapította,
amely a társaság, ahol a nyelv Objective C születik.
Tehát ez alapvetően hagyomány.
Tudom, hogy ez egy kicsit Furcsa, de az Apple.
>> Tehát valami, ami még furább mint egy olyan funkció nyilatkozatot.
Ez nagyon különbözik attól, amit mi lásd a C, mert itt valójában
nem úgy néz ki, mint a C többé.
Mit kell here-- a út ez nem egy golyó pont,
ez egy mínusz jelet.
Van egy mínusz jelet zárójelben void majd a függvény neve.
Mondjuk úgy, hogy ha Van hello world, majd
A visszatérési típus semmis lenne, mert vissza semmit.
>> Milyen lesz igazán fura az, hogy ha éppen
egynél több paraméter halad egy azonos funkcióval, amely
lesz igazán furcsa, mint az itt látható.
Van egy metódus nevet, nevű addInt a [hallhatatlan]
és mi megy egy paramétert.
De azután, hogy van Több metódus neve hívást.
És miután a mi halad A második paraméter.
Ez valójában egy kicsit furcsa, De mindezek függvényében nyilatkozatok
ugyanazt a mintát követik, mint ez.
>> Van egy mínusz jel, hogy kezdődik.
A mínusz jel lehet a plusz jel Néha alapján milyen módszerrel
az.
Módszer alapvetően másik neve funkciót.
És mi lesz elmagyarázni, hogy később, amikor
beszélünk objektumot orientált programozás.
Először adja meg a visszatérés írja zárójelek,
ami után jön a metódus nevét.
Te halad egy paraméter.
És ha több paramétert meg kell terjeszteni a metódus neve
és alapvetően írni valamit bővebben itt.
>> Ez lehet bármi, amit akar.
A mi esetünkben ez a.
De azt is mondhatnánk végén, vagy, vagy, vagy abc teljes sáv, amit akarsz.
Majd azt követően, hogy te múló paramétert b.
Ez egy nagyon furcsa egyezményt, de mi vagyunk
fogja látni, hogy miért Apple akart tennie, hogy nagyon gyorsan.
Szóval hogyan lehet hívni a funkciót?
Calling egy funkciót célkitűzés C is eltér a C.
>> Igazából, hívja a funkciót Objective C
több mint te beszélsz valakivel.
Itt van az önálló, amely nevezzük egy tárgy.
Te alapvetően mond objektum önálló mondani, hogy "Hello World!"
Azaz hogyan kell hívni a funkciót.
Egy objektumot, és egy metódus nevet kombinálva egymással.
És ez az, ahol a furcsa kiterjesztése A módszer neve: tényleg jön szóba.
>> Nézzük meg a második példa.
Mi csak meghatározott módon, az ún addInt a bla-bla-bla.
Tehát ebben az esetben, ha a hívott fél hogy specifikus [? üzenetet?] ez lesz
úgy kinézni, mint önálló addInt: 10: 2.
Úgy hangzik, mint az angol.
Bár a funkciója függvény deklaráció furcsa,
a lényeg az Objective C a metódus minta,
az, hogy ha a hívott fél A függvény vagy módszer
akkor úgy hangzik, mint a tényleges English.
Szóval ez nagyon intuitív ha egyszer kap bele.
>> Különösen ebben az esetben, ahol alapvetően
A függvény neve egyfajta dokumentálása magát.
Önnek nem kell semmilyen További magyarázat, hogy
pontosan mi is történik, mi Pontosan egy paraméter csinál.
Túlmutató, beszéljünk egy kicsit kicsit a objektumorientált programozás.
Objektumorientált programozás egyik alapvető programozási
technikák, minták, amely által használt Objective C Objective C
az úgynevezett Objective C, nem C, egy igazán jó oka.
>> Tehát mielőtt nekilátnánk Objective C szintaxis,
Nézzük nagyon gyorsan nézd meg mi is valójában az objektum.
Mi már valószínűleg tett valamit Mintha objektum előtt, ami
az úgynevezett struct ha végrehajtási egy fa vagy egy láncolt lista
vagy [? próbálni. ?] Szóval, ez alapvetően, mint egy struct,
de sokkal erősebb annál.
Egy objektum módszerek és tulajdonságok.
Módszerek alapvetően funkciókat.
A függvényeket, hogy a adott egy bizonyos tárgyat.
>> És tulajdonságok alapvetően a lehet megadni a struct.
Tehát minden egyes tárgy van néhány tulajdonság
hogy van néhány változót, amely specifikusak az objektumot.
És van néhány funkció is jellemző, hogy az objektum.
Illetve a funkciók nevezett módszerek és a változók nevezik tulajdonságait.
Ez csak egy fantázianév.
Amíg a tény, minden egyes néző látod, amíg nyitni iOS app,
mondjuk, a Twitter vagy a Facebook, minden egyes néző lát egy objektum.
És még az egész app egy tárgy kezdeni.
Nagyon érdekes koncepció.
>> És miért akarjuk objektumot orientált programozás?
Így el lehet képzelni, hogy ha programban ez lesz elég bonyolult.
Mondjuk úgy, ha éppen végrehajtási sakktábla,
A logika fog lehet nagyon bonyolult.
Van 36 különböző darabokat, így ha
akarok írni logika minden 36 különböző darab sakk,
hogy lesz egy csomó különböző funkciók és tulajdonságok.
Ez a sok bajt.
És valószínűleg meg fogsz levelet más módszert, vagy más funkciót
minden egyes darab, hogy pontosan beállítható, amit csinálnak.
>> De ha nem objektum-orientált programozás, az összes ilyen darabok
lehet kivett be egyetlen objektum.
És az objektum lesz néhány közös tulajdonságok, mint a milyen darabot
van ez?
Milyen színű?
Hogyan mozog?
És ezen a módon van nagyban egyszerűsítette a logikája azt.
Tehát ez csak egy nagyon jó módja hogy bonyolult programok,
és fölérendeltségi viszony A program keretében, nagyon egyszerű.
Ahogy megyünk lásd Ezért nagyon gyorsan
vagyunk valójában csinál programming--, mikor vagyunk valójában
csinál egy S-kód programozási lépésben később.
>> Nos mellett, hogy, objektumorientált programozás
csak egy nagyon szórakoztató.
Van, hogy saját objektumot.
Van, hogy tervezzen mit ez úgy néz ki, mint egyedül.
Nincs jó válasz rá.
És ez teljesen érdekes.
Így az objektum orientált programozás, Két alapvető fogalmak
lesz osztály és a példány.
Egy osztály alapvetően egy sablont objektumot.
És egy példány alapvetően Egy adott objektum.
>> Mondjuk úgy, hogy még van egy sütit.
Ebben az esetben, minden egyes süti, hogy tényleg a végén
lesz egy tárgy.
De a cookie-lemezt használ sütni összes cookie lesz egy osztályt.
Egy osztály alapvetően egy sablon.
És a példány lesz az egyik konkrét létrehozott objektum ki az osztályban.
>> És egy példány jön létre alapuló osztály deklarációja,
mint látni fogjuk, a későbbi diák.
Szóval valójában nem egy igazán gyors példa [hallhatatlan].
Mondjuk mi nyilvánításáról Egy objektum egy macska.
A tárgy legyen have-- A macska osztályt kell
Van néhány tulajdonságok és módszerek.
Miféle tulajdonságokat a osztály have-- kell a macska van?
>> Például, szín, kor és fajta, azoknak
lesz változók kifejezetten az egyes macska.
És ezek olyan dolgok hogy az általunk használt leírására egy macska.
Milyen módszerrel, vagy mi lehet a macskát csinálni?
Néhány gyors példa lenne hajsza egér, eszik halat, vagy csak nyávog.
Ez egy nagyon gyors Például a macska osztályban.
És egy igazán egyedi cat tárgy lesz egy macska
ahol meghatározzák a szín, a kor és a fajtát.
>> Ebben az esetben, a mi objektum már nem egy osztály már.
Mi másolja a sablont a class és megadjuk az egyes konkrét információk
hogy az adott tárgyat hogy független.
És ha van hívás Egy módszer egy tárgy belsejében,
hívod miau az objektumra, amely a macska most létrehozott.
>> Valószínűleg akkor nyomtassa ki valami ilyesmit "Hello World!
Miau ".
Nagyon aranyos.
Rendben, nézzük csak bejutni néhány részletet
és mit jelent pontosan, hogy lefordítani, hogy iOS programozás.
Tehát iOS programozás minden egyes osztály bevezetése két fájlt.
Az egyik fájl van, ami hívják a felület.
Egy másik fájl van, ami nevezzük végrehajtása.
>> Jellemzően a felület lesz extension.h
mint láttuk a C könyvtárak.
És végrehajtása fájl megy, hogy extension.n.
Ez furcsa.
De .N módon ténylegesen .c, nincs Alapvető különbség azok között,
két.
Tehát ebben az esetben, azt látjuk, hogy mi vagyunk nyilvánító interfész, Cat: tárgy.
Ez az úgynevezett örökséget.
Mi alapvetően örökli a cat osztály az objektum osztály.
Szóval minden tulajdon és a módszer volt korábban meghatározott objektum osztály
automatikusan meghatározott Egy macska osztályban is.
>> Ezen felül, definiálunk szín, fajta, és az életkor, a három változó.
Hogy valóban úgy néz ki, mint a valamit, amit megtettél előtt.
Úgy néz ki, mint struct.
Ez alapvetően a szintaxis A struct nyilatkozatot,
és ez teljesen korrekt.
És mivel már említettem korábban, A különbség a struct
és egy tárgy, az egyik a alapvető különbségek
az, hogy egy objektum módszer, míg a struct csak változók.
Tehát amellett, hogy a tulajdonságok vagy változók általunk létrehozott objektum,
megadjuk néhány módszert.
>> Mondjuk úgy, hogy a sor két módszer, az egyik miau,
egy másik a hajsza az egeret.
Azt érdemes halad a paraméter alapján a korábbi módszerrel
nyilatkozat mintát.
Talán szeretnénk lenni halad egy egeret.
És akkor érdemes vissza a bool jelölő
Ha macskád sikeresen fogott az egeret, vagy sem.
>> Ez az interfész, de nem tudjuk láthatjuk, hogy a felület ténylegesen
nem csinál semmit.
Csak azt mondja egy programot, amit exists-- mi van a macska osztályban.
Tehát annak érdekében, hogy a programot csinálni valamit,
mi szükség van végrehajtási fájlokat.
Tehát itt, az első dolog, amit tennie, Nyilvánvalóan importáljuk a felületet.
Miután importáljuk a felületet, definiáljuk az módszer.
>> Mondjuk úgy, hogy itt miau azt csak nyomtassa ki
"Hello World!" a konzolra.
És a végrehajtási fájl, mi elég sokat tenni.
Ez tulajdonképpen egy osztály nyilatkozatot egy osztály.
Tehát most a kérdés az, hogyan, hogy egy változót?
A használat módja egy osztály létrehozására tárgy Objective C van írva itt.
>> Először meghatározzák, hogy ez egy macska mutató,
mert minden tárgy Objective C végül megvalósult a mutató.
És akkor hívja az osztály, hívja őket mint alloc, ami alapvetően malloc,
mondja a használt operációs rendszer Kell egy kis memóriát ehhez az objektumhoz.
Ezután meg egy tárgyat és már csak inicializálás.
Ez csak egyezmény.
Tudom, hogy ez egy kicsit furcsa, de tulajdonképpen így az Apple nem cucc.
>> Hozzárendelése tulajdonságok valójában nagyon egyszerű.
Ez nagyon hasonlít a mit csinálsz, ha
te hozzárendelése néhány konkrét mező belsejében struct.
Csak ki a változót megnevezni, a tulajdonság nevét,
és hozzá adott értéket is.
És felhívása a módszer nagyon hasonló.
Az eljárás meghívásakor is Alapvetően, amit beszélnek
hívását bármilyen módszerrel célkitűzés C.
>> Te halad egy tárgy, Ebben az esetben ez lesz myCat,
és te halad a metódus nevét.
Mintha te beszélsz az objektumot, myCat, hogy meg kell nyávog.
Ez elég érdekes.
Ezután, van egy További lényeges tervezési minta
hogy meg kell beszélni mielőtt elindul a tényleges S kódot.
Hogy a tervezési minták hívják eseményvezérelt programozás.
Ez egyben talán az egyik alapgondolata az iOS programozás.
>> Szóval akkor valószínűleg nem tudja, pontosan mi az eseményvezérelt programozás,
de ez nem is olyan ijesztő.
Nos valóban, van tette, hogy mielőtt.
Ez az egyik sor, akkor már valószínűleg Már írt az elmúlt [hallhatatlan]
A CS50, google.maps.event.addListener (marker,
"Klikk", function () {}) :.
Hívja ezt a sort Ön tulajdonképpen azt a számítógép
hogy amikor a rendezvénnyel "Klikk" történik a marker,
használni ezt a funkciót.
>> Ez nagyon különbözik a mit csinálsz mario.c.
A mario.c csak a program futtatásához Egyszer, mert ad egy output,
és kész.
Ezek a fajta, mint egy lövés programok.
Eseményvezérelt programok Nagyon, nagyon különböző.
Képzeljük el, ha a Facebook egy lövés programot ez nem igazán jó.
Te csak menj Facebook egyszer és kész.
Ez ad neked egy kimenetet és soha nem kaptam vissza.
Soha nem kaptam mást.
>> Tehát itt, különösen, A mintát használtunk,
eseményvezérelt, hogy Minden funkció
fogott alapján, amit esemény történt.
Például, ha van egy gombot, és adja meg
hogy valahányszor hogy a gombra kattint, A funkciót a "Hello World!"
Ily módon tudjuk igazán kezeli a funkcionális logikát
áramlás rendkívül rugalmas módon.
A felhasználó tehet, vagy hívja a funkciót a már hívott.
Teljesen alapján, amit a felhasználók nem.
>> Tehát láthatjuk, hogy ez valóban sokkal jobb, mint mario.c.
És a jó hír az, hogy ez az valójában nem egy új koncepció.
Srácok már megtette hogy az utolsó probléma beállított.
Tehát Objective C van Három különböző diagramok
A eseményvezérelt programozás.
Az első diagram úgynevezett target fellépés,
ahol megkötik a gombot nyomja meg néhány funkciója.
Mondjuk úgy, ha rákattint Néhány gomb, hívja néhány funkciója.
Ez nagyon egyszerű célt fellépés.
>> A második egy valójában a legnehezebb,
ezt hívják delegáció protokollt.
Megyünk megmagyarázni hogy részletesen később.
És a harmadik út értesítést.
Ez tulajdonképpen nem Nagyon fontos, amennyire
mint mi érintett, mert az esélye hogy fogsz használni értesítés
a projekt végső elég alacsony.
Így fogunk ugrani, hogy részt.
>> És megyünk merülni a delegáció protokollt.
De pontosan mi is az a protokoll?
Vagy mi is pontosan a küldöttség?
Beszéljünk protokoll kezdeni.
Protokollok, de semmi eseményeket.
De ezek az események adott akkor az Apple kezdeni.
Például, nem vagyok Teljesen biztos benne, hogy sokan közületek
srácok használja az Apple eredeti app mail vagy kontakt,
de minden alkalommal, amikor görgetni a asztal és nyomja meg az adott cellában
az asztalra, hogy egy esemény.
>> És ha akarod Ez esetben egyedül,
ez valójában egy kicsit nehéz.
Tehát az Apple adta, hogy még neked így csak közvetlenül használja
Az esemény, hogy tegyen valamit a saját.
Jegyzőkönyveit ténylegesen Nagyon, nagyon széles körben használt
Célkitűzés C. Nos Tény, hogy minden egyes app
van valami fogott app küldött.
Belsejében kényes az összes protokollok betöltése app.
>> Mondjuk úgy, hogy van egy esemény app tette terhelést.
Mi legyen tehát Miután létrehozott egy app, miután megnyitjuk az alkalmazást,
bezárása után az alkalmazás, vagy után teszel az iPhone aludni.
Ezek mind olyan események, amelyek már már adott neked.
És eredetileg benne ezek a részecskék nem lesz végrehajtás.
Apple most mondtam, hogy ez a funkció fog történni, ha valamilyen esemény történik,
de mit csinálsz azzal, hogy funkció teljesen rajtad múlik.
>> Küldöttség alapvetően mondja az osztály
hogy meg kell kezelni ezeket a protokollokat.
Ez egy kicsit zavaró, de ez lesz
sokkal tisztább, amikor mi Az ok kódok akcióban.
Delegáció protokoll valójában egy Igen erős mechanizmus abban az értelemben,
hogy ha nem teszünk küldöttsége hogy egy adott osztály,
tudjuk lényegében kezelni mindenféle rendezvények
bármilyen class van, Nagyon kényelmes eszköz.
>> Tehát az egyik gyors példa delegáció protokoll
lesz, amit az előbb beszéltem.
Ez a protokoll kifejezetten hívják Tableview [hallhatatlan] válassza szerepe
A [? index?] [? múltban. ?] Tehát ez egy Amennyiben akkor ütközik, ha
valóban megérint egy konkrét sejt a Tableview,
mondjuk, a mail vagy a kapcsolatok app.
>> Függvényen belül volt Eredetileg nem csinált semmit.
Ez a funkció nem semmit alapból.
De megadhatja amit a függvény,
adott mit akarsz ki a app.
Nagyon kényelmes eszköz.
És minden, hogy azt mondta, én alapvetően
fedezze néhány alapvető szintaktikai és az alapvető koncepció Objective C
programozás, és tehetünk néhány s kódot.
Sokkal izgalmasabb.
Tehát s kód valójában egy kicsit nyomasztó
amikor megnyitja az első alkalommal.
>> Egy gyors megjegyzés, így ha akarok iOS fejlesztési,
Azt ajánlom, hogy egy Mac.
Azért, mert iOS fejlesztés A Windows is nagyon, nagyon nehéz.
Ez megvalósítható, de ez nagyon nehéz.
És akkor biztosan nem akarja használni g szerkesztés.
Így s kód van Több különböző területeken.
Amikor először nyit s kód akkor megjelenik egy navigációs területen,
ami alapvetően megmutatja az összes fájlokat, amely szerepel a projektben.
>> Van egy eszköztáron, amely alapvetően ügyvezető nézetek,
vagy egy kis gyors Szerszám s kód is.
És ez a tényleges szerkesztő területen.
Ez a terület nagyon hasonlít g szerkesztés, de sokkal jobb, mint g szerkesztés.
És ez a jog területén, a úgynevezett közüzemi területen.
A terület akkor válik igazán hasznos, ha te létre interfész vagy megnevezze
Néhány gyors beállítások a app.
>> És az utolsó terület a hibakeresés.
Ez a terület tartalmazza a konzol.
Tehát, ha azt mondod printf, vagy NSLog a mi esetünkben,
minden eredmény lesz itt nyomtatták.
Rendben?
Azt hiszem, tényleg gyorsan csinálni Példaként az iOS programozás.
És legyünk valóban nyit s kódot.
Tehát minden alkalommal, amikor megnyitja s kódot, ez fog felbukkanni valami ilyesmi.
Meg fog kérni, mit akarsz csinálni?
Mit akar kezdeni valamit véletlenszerű, játszótér, alapvetően meg
lehet csak teszt kód nélkül érvénybe, hogy minden app.
>> Szeretné, hogy hozzon létre egy új projektet?
Vagy azt szeretnénk folytatni dolgozik a jelenlegi projekt?
A mi esetünkben megyünk hogy hozzon létre egy új projektet.
Szóval ez tényleg szép, s kód valójában már
adott neked néhány sablont objektumok létrehozásához.
Ha azt szeretnénk, hogy egy játék, S-kódot valójában egy játék sablont az Ön számára,
van az oldal alapú alkalmazások, fül alapú alkalmazás.
Ebben az esetben, megyünk hogy tegyen valamit nagyon egyszerű,
és fogunk használni egyetlen nézetben alkalmazást.
>> Ezután csak mi szeretnénk felhívni a terméket, és mi a neved,
mi a azonosítót, és mit nyelvet használ.
Itt nem akarjuk, hogy ellenőrizze a Core adatok.
Core adatokat tulajdonképpen egy databasing iOS.
Ha igen Core Data, s kód fogja meghatározni
sokkal bonyolultabb osztályok az Ön számára.
Tehát, hogy minden egyszerű, mi vagyunk csak csinálni anélkül Core adatok
most.
>> A probléma mi lesz segítségével az hogy-- a problémát
fogunk, hogy létre, hogy mi Alapvetően az importálni kívánt Mario a C
egy iOS app.
Így hívjuk, hogy Mario-iOS.
Hát persze, hogy adja meg az Ön kívánja helyezni a projektben.
És ott is vagyunk.
>> Szóval ez egy kicsit nyomasztó, de ez valójában
amit most láttam a diák.
És az első terület látjuk most alapvetően projekt konfiguráció.
Tehát minden, amit akarok projekt, hogy milyen eszköz,
maradjunk annyiban, hogy milyen eszköz Szeretnéd, ha a app jelenik meg?
Vajon iPhone, iPad vagy univerzális?
Szóval eszköz orientáció, ez az egész.
Nem nagyon fontos, de lehet, de ez a
az a hely, ahol létre a projekt, ha valóban
szeretné telepíteni az Apple boltba.
>> Rendben, nézzük meg valamit, ami belül van a kód.
Menjünk át a fájl navigátor.
És ezek azok a fájlok, amelyek már jött a sablont, nagyon szép.
Így, amikor rákattintunk az egyikre ez az, amit úgy néz ki.
Nagyon hasonló a g szerkesztés.
De láthatjuk, hogy a szintaxiskiemeléshez, valószínűleg
egy kicsit kedvesebb.
És ez valójában sokkal erősebb, mint g szerkesztő.
És akkor az automatikus teljes egy csomó dolog az Ön számára,
mint látni fogjuk, nagyon gyorsan.
>> Nyisd ki a hibakeresés területen is.
Rendben, amint látjuk, A konzol itt.
Ez mit fogsz látni, ahol te vagy a printf vagy nsloging valamit.
Tehát minden további nélkül, nézzük valóban fordítsd le a app, és meglátjuk, mi történik.
Az egyik alapvető jellemzője a s kódot, hogy s kód
jön egy iPhone-szimulátor.
Szóval nem kell egy iPhone próbálni a projekt,
s kódot képes szimulálni, hogy az Ön, mint látjuk most.
>> Ez nagyon szép.
Ez vesz egy kicsit kis időt fordítani
és alapvetően van egy üres alkalmazás,
amely valójában nem csinál semmit.
De lefordítja.
Ez nagyszerű.
Ez sokkal jobb, mint a C, mi?
Rendben, akkor nézzük próbálja meg felvenni valamit.
Egy fájl, ami egy kicsit fura itt az úgynevezett storyboard.
Ez tulajdonképpen egy nagy, félelmetes funkciót s kódot.
Mert s kódot, akkor valóban drag és vidd elemeket rá a felületet
és közvetlenül is megjelennek.
Próbáljuk.
>> Mi csepp egy címke van, "Hello World !!!"
Mi lehet a központ, amely.
Elég jó.
Most fussunk a stop szimuláció.
Itt van "Hello World !!!"
Mi nem is csinál semmi kódolás még.
Mi a fene folyik itt?
Ez milyen erős Interface Builder lehet.
Valaki még azt is mondta, hogy Tudod talán most
töltsön ki egy app írás nélkül Valószínűleg ezer sornyi kódot
csak használja a Interface Builder.
De ez valószínűleg nem A legjobb megoldás erre.
>> Most tényleg csak le kódolás.
Így a szerkezet a fájl tényleg nagyon érdekes,
mert, ahogy lehet látni, ott nincs fő funkciója bárhol.
Látod?
Mint már említettük, akkor láthatjuk, hogy ez a
alapjaiban egy fájlt Egy adott osztályban.
De nincs fő bárhol.
Szóval hol van a fő?
Valójában, van egy fő, de a Fő valójában rejtve van.
A fő van itt.
Úgy néz ki, ismerős.
>> Tehát alapvetően mi iOS csinál belsejében fő
az, hogy bármikor fő van nevű, ami alapvetően
ha az alkalmazás futtatásakor a létrehoz egy objektum neve AppDelegate.
Ahogy már korábban említettem, a teljes app valójában egy tárgy önmagában.
Tehát ily módon, alapvetően a iOS app mondja a fordító
hogy OK, megyek létrehozni egy termék nevű AppDelegate,
és ez lesz az app.
Tehát el kell menni ezen keresztül AppDelegate
és mi az a fickó csinál.
Végeztem a számomra.
>> És AppDelegate láthatod, hogy van néhány igazán furcsa funkciók,
Nos valóban módszereket, amelyek Az Apple már adott Önnek.
Mik ezek?
Ezek valójában csak protokollok hogy én beszélek.
Tehát ezek olyan események, amelyek az Apple adott Önnek kezdeni.
Semmi sem bizonyos A funkciók most,
de ha azt akarjuk inicializálni valamit a app
mielőtt beült megjelenítésére Bármelyik nézetben tudnánk mi ezt itt.
>> Akkor csak olvasd el a nevét és azt hiszem, Amennyiben valóban nagyon világos.
Tehát most fő teremtett egy tárgy AppDelegate.
És mi AppDelegate fog csinálni valójában is rejtve van.
A AppDelegate fog kezdeni betöltése ViewController állomány.
Tehát alapvetően fog kezdeni rakodást a véleményét, hogy van
és csak teszi a néző alapján a hierarchia.
>> Tehát ebben az esetben már csak egy nézetet, ami itt van.
Tehát ez az egyetlen nézetet hogy fog hívni.
A ViewController logika itt.
Ez a kód, amely ténylegesen vezérli a nézet láttunk.
Rendben, csináljuk valamit.
Tehát viewDidLoad hangzik, mint egy esemény, amikor valójában ez is egy küldöttel,
ez is egy protokollt.
>> Így bármilyen céllal kerül betöltésre, mindent a függvény belsejében
fogják hívni.
Ebben az esetben meg kell látni "Hello Tianyu! ", Ha a program futtatásához.
Kezd egy kicsit lassú összeállítása storyboard fájlokat.
Nos valóban, tartjuk, hogy a kimeneti érte.
Ez elég jó.
Most valóban meg Mario.
Megyek, hogy meghatározza a működik nagyon gyorsan.
marioWithLevels: (int) szintű eredményeket.
>> Rendben, ez valójában a félelmetes jellemzője s kód automatikus kiegészítés.
Tehát amikor írsz, és írja be, már feladta a sablon
az Ön számára, ami elég jó.
Hogy kell nézni igazán ismerős srácok.
Bocsánat, de ez az én hibám.
Rendben, jó.
Hogy a logikát kell nézni igazán ismerős a srácok, főleg közvetlenül Mario.
>> De mi most kinyomtatni A konzol minden egyes alkalommal,
mert azt akarjuk, hogy valahogy tartani követni, hogy mi vagyunk a nyomtatást.
Megyünk használja a Eredmények valahogy később,
hogy megjelenítse a nyomtatási ki eredményezi, hogy a felhasználó számára.
Tehát ahelyett, hogy mi csak nslogging mindent,
amelyet szeretnénk tárolására mindent egy függvényhívás eredménye,
de a logika pontosan ugyanaz.
Miután befejezte, mi csak nyomtatni eredményeink.
>> És itt van, nem nyomtatja én nevet, fogunk hívni függvényében.
Lássuk, mi történik.
Hoppá, nyilván.
Van egy szép piramist itt.
Ez alapvetően C, mi csak manipulálni, ahol a tétet függvényében
és hogyan függvényében kinézni.
Nincs semmi más.
De ez valójában Nem nagyon izgalmas itt,
mert nem látunk semmit az iPhone app.
>> Tehát, ha valóban van egy iPhone app-- Ha valóban van Mario iOS joga
Most, hogy nem fogod látni semmit, hogy
van valami köze Mario miatt minden kimenet egy konzolra
el vannak rejtve a felhasználó.
Ez az, amit látsz, amely "Hello World !!!"
Nem jó.
Most próbáljuk, hogy a felhasználó látni pontosan mi vagyunk a nyomtatást.
Tehát nem kell címkézni többé.
Próbáljuk kitalálni valamit más, ami hasznos lehet.
>> Van valójában egy elem, hogy az úgynevezett
szövegmezőbe, ami nagyon hasznos lehet számunkra.
Ez alapvetően megjeleníti a régióban A szöveg szerkeszthető.
Tehát úgy néz ki, igazán hasznos.
Most húzd és dobd el.
Wow, van egy szöveges nézethez Véleményünk szerint igazán divatos.
Ez egy kicsit túl nagy.
Legyünk kisebb.
Tedd be center.
Hogy kisebb is.
>> Most van egy szöveges nézet, amit be tudtunk használható megjelenítéséhez a végeredményt.
De most ez biztosan nem fog működni
mert van no-- a ViewController mi csak
meghatározott nem tudja, hogy van egy szöveges nézet odakint.
Tehát meg kell valahogy összekapcsolják a szöveges nézet mi csak
létrehozta az osztállyal, hogy már jött velünk.
>> Mint ahogy mi tesszük, hogy az Igazából nagyon varázslatos.
Így nyit storyboard.
Van egy különleges [hallhatatlan] nevű [? asszisztens?] [hallhatatlan].
Ha rákattint, hogy ez fogja megnyitni két fájlt.
Az egyik egy osztály és a másik egy egy megfelelő nézetet érte.
Ez nagyon, nagyon hasznos.
És nézzük csak átmegy a .h fájlt.
Kontroll, ez [hallhatatlan] logikát.
Nyomja meg a Ctrl és húzza a text kilátás a nyilatkozatot.
Fogunk hívni, hogy outputView.
Kösse.
Tehát itt vagyunk kijelentették új ingatlan a ViewController osztályban.
És az új ingatlan csak a szöveges nézet
hoztuk létre a felületen épületben.
Tehát ilyen módon tudnánk hozzáférést az összes adatot
és manipulálni mindent, ami belül van A kimeneti nézet, ami félelmetes.
>> Tehát a mi tényleges kódot, csináljuk valamit vele.
Tehát ebben az időben, amikor olyanok vagyunk, mint a nyomtatás ki a végleges eredményt, Mario,
mi vagyunk Nem lépsz semmit.
Úgy értem tudtuk tartani A naplózás nyilatkozatot.
Ezen felül, mi Levél a kiolvasás mi csak
létre, hogy a kimeneti nézetet, amely egy UI TextView most létrehozott.
Most lássuk, mi történik.
Wow.
Van egy piramis a app most.
>> Így a felhasználó láthatja a kimeneti miatt felmásoltuk kimenetét a kódot
hogy a felület.
Ez nagyon jó.
Ez valójában nem az, hogy izgalmas, mert can--
Minden app tesz, bemutatva egy piramis úgy,
és nincs semmi, amit tehetünk róla.
Ez nem különösebben izgalmas.
Tehát most tegyük egy gombot hogy törli a véleményét.
Úgy tűnik, hogy egy gomb hasznos lesz.
Drag and drop.
Gombot egy.
Gombot kettő.
>> Tehát amikor kattintson a bal gombot, a néző meg kell szűnnie.
Ott kell semmi a képernyőn.
És amikor kattintson a jobb gomb, Mario,
azt a nézetet fog megjelenni újra.
Szóval így mi is ezt a magic cucc, ellenőrzési és drag
Az osztály deklarációja az asszisztens director--
az asszisztens nézőt.
Ebben az esetben azt meghatározva hogy hogy kell egy akció.
clearMario.
>> Tehát itt már létrehozott cselekvési nevű clearMario,
amely a módszer, hogy a neveznénk amikor csak nyomja meg a gombot egyértelmű.
Tehát a mi valóban kódot, nézzük csak tedd a kimeneti szöveg és a kimeneti nézet
semmibe, és így úgy jelenik meg, egyértelmű.
Ezen felül, hozzunk létre Egy másik módszer az úgynevezett runMario.
Ó, sajnálom, hogy nem kell egy ingatlant.
Rendben, hogy amennyiben hogy egy cselekvési is.
>> És amikor ez a funkció nevű, csak futni Mario tíz.
Remélhetőleg, hogy minden rendben lesz.
Vajon összeállítására?
Igen.
Most van kilátás.
Van egy kimenetet.
És nézzük meg, mi történik.
Hogy elment.
Most újra visszatér.
Tehát itt megadott milyen funkciót
fogják hívni, ha beírjuk valamit,
amikor megnyomjuk adott gombot.
Ez alapvetően target cselekvési program
A eseményvezérelt Programozás Objective C
>> Ezen felül, ez nem túl izgalmas
mert nem tudjuk igazán változtatni milyen magas piramis lesz,
ezért érdemes valahogy kap egy felhasználói bevitelt
és a változás a magassága a piramis alapján, amit kimeneten.
Így fogunk csinálni.
Tehát ebben az időben, ha hívjuk runMario, mi nem csak hívja Mario közvetlenül.
Ez az ember címmel.
>> Küldöttet.
Ez nagyon érdekes.
Mi egy küldöttet?
Azt fogom tenni én itt.
És fogunk látni hogy ez mit jelent majd.
Itt van tehát alapvetően létre adott esetben úgynevezett UI figyelmeztetés
kilátás.
A UI figyelmeztető nézet Alapvetően mi lesz
lásd minden alkalommal valami durran up és bevitelre vár,,
mint mi fog történni, ha akarsz, vásárolni valamit egy app store.
>> Ezen felül, miután Létrehozni, mi csak azt mutatják, a figyelmes.
Rendben, nézzük csak gyorsan teszt, hogy a munka vagy sem.
Ez nagyon klassz.
Most valóban létre beviteli mező a UI éber.
Így tudjuk csinálni.
És mi kell egy input kilátás a figyelmes.
Nagyon klassz.
Mondjuk úgy 10.
>> Ez nem csinál semmi jót most, mert a hívás ténylegesen
nem változott végrehajtásához Mario.
Tehát ez lett egy kicsit kicsit furcsa, mert ha
mi nyomja a gombot, amikor csak nyomja meg a gombot a riasztás szerint
valami történne, de ez nem történik meg.
Hogyan elkapni ezt?
Honnan tudjuk, hogy a felhasználó elutasította egy figyelmeztető nézet
és már belépett a szám, mert Most semmi sem történik valójában.
>> Nos, lehet, hogy kitalálta ez jobb, küldöttségnek.
Tehát amellett, hogy minden Ezek a nyilatkozatok,
mi kell hozzá egy új küldöttsége ez az úgynevezett UI figyelmeztető céllal küldött.
Hogy minden egyes interakció vagy esemény
hogy mi lesz, hogy A UI figyelmeztető nézet
lesz kezelni a mi osztályban is.
>> Tehát amellett, hogy hogy, lesz figyelmeztető Nagyításhoz kattintson gombra index.
Ezt a nyomást elértük.
Tehát ebben az esetben van already-- így van
kiderült, a protokoll, kezeli az esemény, amikor
kattintsunk a Kész gombot, A figyelmeztető kilátás.
Tehát minden alkalommal, amikor utasítsa el a figyelmeztetés szerint ez történne.
Hadd tesztelni, hogy nagyon gyorsan.
Nos valóban, idáig eljutottunk.
>> Tehát itt, mi nem fogunk valójában kap tulajdonképpen
hogy a-- Ezért szeretnénk kijutni a szöveg, hogy már korábban
belépett a riasztási nézetet.
És a szöveges vagyunk fog megjeleníteni Mario.
Ez nagyon gyorsan kiderül, ha tényleg működik-e vagy sem.
Tehát ebben az esetben, ha bemenet, mondjuk, 10, látnunk kell, 10.
>> Nagyon jó, nekünk van egy száma van.
Ez nagyon jó.
Most az utolsó lépés a be-- Tehát az Utolsó lépésként meg kell tennünk most
csak egy hívás Mario szint alapján a bemeneti
hogy mi tesz a figyelmeztető kilátás.
Tehát meg kell átalakítani ezt a karaktersorozatot iOS.
Statikus túlfolyó nagyon félelmetes.
És akkor hívjuk self marioWithLevels értéket.
Lássuk lesz, hogy valóban működik-e vagy sem.
>> Mi már adott egy piramis.
Próbáljuk változtatni a magasságot.
Hogy tényleg működik.
Ez elég jó.
Úgy, hogy most már tudod, csak bemeneti értéket szeretne.
Mondjuk úgy, hogy négy.
Ez elég félelmetes.
Tehát ez alapvetően egy igazán gyors példa
hogyan lehet létrehozni egy projekt s kód és hogyan kell nagyon gyorsan vezetékre
néhány igazán egyszerű események és funkciók.
>> Tehát a forrás folyik kell fektetni online később.
Tehát, ha érdekel hogyan iOS Mario működik,
Azt fogom tenni, pontosan ugyanazt projektek rá a CS50 honlapján később.
Mi alapvetően tenni a Nyáron, és mielőtt befejeznénk
Én csak azt szeretném kiemelni srácok néhány igazán félelmetes erőforrások
online elérhetők.
>> Természetesen az Apple dokumentációt lesz nagyon hasznos.
De amellett, hogy, hogy, én különösen Javasoljuk négy forrás kódot az iskola,
faházba, AppCoda és WWDC videók.
Kódot az iskola és a fa házban két online nevelő honlapok,
amely kifejezetten összpontosítani a szoftverfejlesztés.
Különösen a kódot iskolában, igazán jó tutorial iOS.
>> Ez egy nagyon gyors példa rá.
Ők valójában egy nagyon cute-- Nézd azt a kis aranyos iPhone
haver ott, ez elég félelmetes.
És ahogy magyarázza Cél C szintaxis teljesen világos.
Fa ház ugyanaz.
És AppCoda egy fórumot.
Ez valójában egy blog futtatott egy nagyon tapasztalt Objective C
programozó.
És mindazok, oktatóanyagok AppCoda van elég rövid és könnyen megvalósítható,
erősen ajánlott.
>> És ha a fejlesztő, biztosan megnézem
hogy a WWDC videókat, ahol csak lehet megismerhetik a legújabb iOS programozási
technikák, API-k és könyvtárak.
Szóval ez elég sokat ez a szeminárium.
Köszönöm szépen.
És remélem, jó szórakozást ami a saját iOS app.