>> Tianyu LIU: Hey, hoe is dit gaan almal?
En dit is die IOS App ontwikkeling van objektiewe c seminaar.
En my naam is Tianyu Liu.
Ek is 'n Lowell junior nou, konsentreer in rekenaarwetenskap.
So in hierdie seminaar Ek is gaan julle ouens te leer
'n bietjie oor hoe om 'n app te maak.
Yay, opgewonde vir dit.
>> So voordat ons selfs begin duik in die werklike ontwikkeling kant,
laat ons net regtig vinnig praat oor Hoekom wil jy dalk 'n IOS app op te bou?
Hoekom is IOS so awesome?
Dus is die eerste probleem, die eerste ding wat pretty awesome vir ons,
veral as 'n CS50 student, is dat IOS
gebruik Doelwit C. Wel, daar is 'n nuwe taal, die sogenaamde Swift,
maar ons gaan nie gebruik wat in hierdie seminaar.
As jy belangstel in Swift, is daar is 'n onafhanklike seminaar oor dat.
Maar doelstelling C is basies 'n superset van C. Betekenis
dat alles wat jy in C gebruik kan word in die doelstelling C vertaal
baie maklik.
>> As jy dalk later, dat dit inderdaad sien daar is 'n paar baie basiese sintaksis, is
basies presies dieselfde, C en Doel C. So,
omdat jy CS50 geneem hierdie ver, het jy al
weet doelstelling C, ten minste 40%.
Ook, Apple het 'n baie robuuste API vir IOS.
Daar is 'n baie werklik gek dinge wat jy kan doen met dit.
Waarvan een is iemand eintlik geskep het 'n IOS app
vir die beheer van motors, wat is redelik interessant.
Waarskynlik 'n helikopter is meer opwindend.
Maar dit is hoe kragtig die IOS API kan wees.
>> En as jy dalk ' uitgepluis nou,
die stapel oorloop is waarskynlik een van die die belangrikste aanlyn hulpbronne
aan u beskikbaar.
En die goeie nuus vir elke enkele probleem wat jy moontlik kan
dink, terwyl die bou van jou finale projek in Objective C,
daar is waarskynlik 'n stapel oorloop antwoord.
Dis net awesome.
Behalwe dat, IOS is regtig 'n platform
waar jy kan bereik 'n groot gehoor met min moeite.
Dit is nie soos Android, waar alles is mooi gefragmenteerde.
>> Alles IOS is verenig.
En so lank as wat jy skep 'n app vir 'n iPhone,
jy kan baie maklik hawe wat aan iPad, iPad mini, of verskillende iPhone groottes.
Dit is alles baie gerieflik.
En dit is net regtig 'n goeie vir die indrukwekkende jou vriende.
Jy kan net oor 'n iPhone en vertel jou vriend hey,
dit is die app ek maak.
Jy kan dit doen vir enige lessenaar apps, wat is lekker.
>> Alle reg, laat ons nou eintlik kry in die taal Doelwit C.
So waarom nie ons begin met 'n paar baie basiese sintaks.
Soos ek voor Doelwit genoem C Dit is basies 'n superset van C.
So 'n baie basiese sintaks is eintlik presies dieselfde.
Waarby 'n veranderlike en voeg twee veranderlikes saam
is presies soos ons in Mario gedoen het.
Niks nuut hier.
>> Net so, die loseerder lus en toestand is ook dieselfde.
Wat jy kan doen 'n lus vir net soos jy het het in 'n Mario [onhoorbaar].
En wat jy kan doen voorwaardes net soos wat jy
gedoen het in jou vorige p stelle.
Maar doelstelling C is nie heeltemal C,
en daar is iets wat is 'n soort van vreemde daaroor.
>> Die eerste een is dat wanneer jy doen C programmering, jy gewoonlik noem
sluit en dan 'n biblioteek naam.
Maar in Objective C jy noem dat die invoer.
Basies sê funksies, net verskillende name.
En die snare is eintlik 'n bietjie vreemd.
Jy kan sien dat die eerste ding wat is 'n soort van vreemde
is dat jy 'n mooi weird-- sorry-- jy het 'n mooi vreemde NS
teken hier verby.
En die tweede ding dit is soort van vreemde
is jy 'n plat teken voor eintlik verklaar dat die string.
So het die by teken basies beteken dat 'n string is nie net 'n string,
dit is eintlik 'n voorwerp.
Ons gaan om te verduidelik wat later so doen nie
paniek as jy dit nie doen nie verstaan ​​wat dit beteken.
En druk te konsole is 'n bietjie anders, want in C ons printf noem,
maar in Objective C ons noem [onhoorbaar].
>> Jy mag dalk wonder wat is dit.
Dit is basies printf, net 'n ander taal.
Presies dieselfde gebruik, presies dieselfde funksionaliteit.
Wel dit blyk dat Objektiewe C eintlik
het 'n ns voorvoegsel in byna alles, elke basiese data tipe,
nsstring, nsarray, nsdictionary.
Die rede hiervoor is dat ns eintlik staan ​​vir volgende stap
wat is 'n maatskappy wat Steve Jobs het gestig,
wat is 'n maatskappy waar die taal doelstelling C gebore.
So, dit is basies tradisie.
Ek weet dit is 'n bietjie vreemd, maar dit is Apple.
>> So iets is wat selfs Weirder as dit is 'n funksie verklaring.
Dit is baie anders as wat ons sien in C, want hier is dit eintlik
nie soos C kyk nie.
Wat jy here-- deur die manier is dit nie 'n koeël punt,
dit is 'n minus teken.
Jy het 'n minus teken hakies leemte en dan die funksie naam.
Laat ons net sê as ons het hello world, dan
die terugkeer tipe leemte sal wees omdat ons terugkeer niks.
>> Wat regtig weird is dat wanneer jy
met meer as een parameter verby in 'n dieselfde funksie wat
sal regtig weird wees soos hier gewys.
Ons het 'n metode naam, genoem addInt te [onhoorbaar]
en ons is verby een parameter.
Maar nou dat die, ons het meer metode noem met.
En ná met ons verby Die tweede parameter.
Dit is eintlik 'n bietjie vreemd, Maar al hierdie funksie verklarings
volg dieselfde patroon as hierdie.
>> Ons het 'n minus teken om te begin.
Die minus teken kan 'n plus-teken wees soms gebaseer op watter soort metode
is dit.
Metode is basies 'n ander naam vir funksie.
En ons gaan verduidelik dat later, toe
ons praat oor voorwerp georiënteerde programmering.
Jy eers spesifiseer die terugkeer tik in hakies,
waarna kom die metode naam.
Jy verby een parameter.
En as jy meer parameters wat jy nodig het om die metode naam uit te brei
en skryf basies iets meer hier.
>> Dit kan enigiets wat jy wil wees.
In ons geval is dit met.
Maar jy kan sê end, of of of abc volle bar, wat jy wil.
En dan na dat jy verby parameter b.
Dit is werklik 'n vreemde konvensie, maar ons is
gaan om te sien waarom Apple wou wat baie vinnig doen.
So hoe funksie noem jy?
Roeping van 'n funksie in Objective C is ook verskillend van C.
>> Eintlik, roep 'n funksie in Objective C
is meer soos jy praat met iemand.
Hier het ons self, wat is 'n voorwerp genoem.
Jy is basies vertel van die beswaar self om te sê "Hello World!"
Dit is hoe die funksie te roep.
'N voorwerp en 'n metode naam gekombineer met mekaar.
En dit is waar die vreemde uitbreiding vir metode naam regtig kom in die spel.
>> Kom ons kyk na die tweede voorbeeld.
Ons het net 'n metode genoem gedefinieer addInt met blah blah blah.
So in hierdie geval as jy 'n beroep daardie spesifieke [? boodskap?] dit gaan
om te lyk soos self addInt: 10 met: 2.
Dit klink soos Engels.
Hoewel die funksie funksie verklaring is vreemd,
die punt van doelstelling C se metode verklaring patroon,
is dat wanneer jy 'n beroep die funksie of metode
dit sal klink soos die werklike Engels.
So dit is baie intuïtief sodra jy in dit.
>> Veral in hierdie geval, waar jy kan basies
sien dat die funksie naam is soort van dokumentasie self.
Jy hoef nie enige meer verduideliking te sien
wat presies gebeur het, wat presies een parameter doen.
Gaan as dit nie, laat ons praat 'n bietjie bietjie oor objekgeoriënteerde programmering.
Objekgeoriënteerde programmering is een van die fundamentele ontwikkeling
tegnieke of patrone wat gebruik doelstelling C. doelstelling C
objektiewe C, nie genoem C, vir 'n baie goeie rede.
>> Dus, voordat ons in Objektiewe C sintaksis,
Kom ons regtig vinnig kyk na wat presies is 'n voorwerp.
Ons het waarskynlik iets gedoen agtige voorwerp voor, wat
is die struct wanneer jy geroep implementering van 'n boom of 'n geskakelde lys
of [? probeer. ?] So, dit is basies soos 'n struct,
maar dit is baie meer kragtig as dit.
'N voorwerp het metodes en eienskappe.
Metodes is basies funksies.
Basies funksies wat 'n spesifiek tot 'n sekere voorwerp.
>> En eiendomme is basies die veld wat jy spesifiseer in die struct.
So vir elke enkele voorwerp ons het 'n paar eiendom
wat 'n paar veranderlikes wat is spesifiek vir die doel.
En ons het 'n paar funksies wat is ook spesifiek op die voorwerp.
En die funksies metodes genoem en die veranderlikes eienskappe genoem.
Dit is net 'n fancy naam.
Terwyl jy Trouens, elke enkele uitsig jy sien, terwyl jy 'n IOS app oop,
laat ons net sê Twitter of Facebook, elke enkele uitsig wat jy sien is 'n voorwerp.
En selfs die hele app is 'n voorwerp om te begin met.
Baie interessante konsep.
>> En hoekom wil ons voorwerp georiënteerde programmering?
So jy kan dink dat wanneer jy program dit kry redelik ingewikkeld.
Laat ons net sê wanneer jy implementering skaakbord,
die logika gaan ingewikkeld word.
Jy het 36 verskillende stukke, so dat as jy
wil logika vir almal om te skryf 36 verskillende stukke in skaak,
wat gaan 'n baie om te wees verskillende funksies en veranderlikes.
Dit is 'n baie moeite.
En waarskynlik jy gaan 'n te skryf ander metode of ander funksie
vir elk van die stuk te presies beheer wat hulle doen.
>> Maar georiënteerde voorwerp as jy dit doen programmering, al hierdie stukke
kan in onttrek word 'n enkele voorwerp.
En die voorwerp sal 'n paar algemene eienskappe, soos watter soort stuk
is dit?
Watter kleur is dit?
Hoe kan dit beweeg?
En in die manier wat jy het grootliks vereenvoudig die logika van dit.
So dit is net 'n baie goeie manier ingewikkelde programme te maak,
en hiërargiese verhouding binne die program, baie eenvoudig.
As ons gaan om te sien waarom baie vinnig wanneer
ons is eintlik doen programming-- wanneer ons eintlik
doen 'n S-kode programmering sessie later.
>> Wel, in Behalwe dat, objekgeoriënteerde programmering
is net 'n baie pret.
Jy het jou eie voorwerp te ontwerp.
Jy het om te ontwerp wat beteken dit lyk soos deur jouself.
Daar is geen reg antwoord daarop.
En dit is heeltemal interessant.
So in objekgeoriënteerde programmering, twee fundamentele konsepte
sal die klas en byvoorbeeld wees.
'N Klas is basies 'n sjabloon vir voorwerp.
En 'n geval is basies een spesifieke voorwerp.
>> Laat ons net sê jy maak 'n koekie.
In hierdie geval, elke enkele koekie jy eintlik eindig met
gaan 'n voorwerp wees.
Maar die koekie plaat wat jy gebruik om te bak al die koekies sal 'n klas wees.
'N Klas is basies 'n sjabloon.
En die instansie sal een spesifieke wees voorwerp geskep uit die klas.
>> En 'n geval sal geskep word op grond van klas verklaring,
soos ons sal sien in later skyfies.
So laat ons eintlik 'n werklik vinnige voorbeeld [onhoorbaar].
Kom ons sê ons is te verklaar 'n voorwerp vir 'n kat.
Die voorwerp moet have-- die kat klas moet
het 'n paar eienskappe en metodes.
Watter soort van eiendomme moet die klas have-- moet die kat het?
>> Byvoorbeeld, kleur, ouderdom en ras, diegene
sal veranderlikes wees dat is spesifiek vir elke kat.
En dit is 'n paar dinge wat ons gebruik om 'n kat te beskryf.
Watter soort metode, of wat kan 'n kat doen?
'N paar vinnige voorbeelde sou jaag wees muis, vis eet of net miaau.
Dit is 'n baie vinnige voorbeeld van kat klas.
En 'n baie spesifieke kat voorwerp sal 'n kat wees
waar ons spesifiseer die kleur, ouderdom en ras.
>> In daardie geval, ons doel is nie meer 'n klas nie.
Ons kopieer die sjabloon van die klas en elkeen van ons spesifieke inligting spesifiseer
aan daardie spesifieke voorwerp dit onafhanklik te maak.
En wanneer jy 'n beroep 'n metode in 'n voorwerp,
jy net noem miauw op die voorwerp, wat is die kat jy net geskep.
>> Waarskynlik sal jy druk iets soos "Hello World!
Miaau. "
Oulik.
Alle reg, laat ons net kry in 'n paar besonderhede
en sien wat presies doen wat vertaal in om iOS programmering.
So in IOS programmering elke enkele klas sal in twee lêers geïmplementeer word.
Een lêer is hier, wat is die koppelvlak genoem.
'N ander lêer is hier, wat is implementering genoem.
>> Tipies van die koppelvlak sal extension.h het
soos ons in C biblioteke gesien het.
En implementering lêer gaan extension.n te hê.
Dit is soort van vreemde.
Maar .n beteken eintlik .c, is daar geen fundamentele verskil tussen die
twee.
So in hierdie geval, kan ons sien dat ons verklaar koppelvlak, Cat: voorwerp.
Dit is erfenis genoem.
Ons is basies erfgename van die kat klas uit die voorwerp klas.
So elke eiendom en metode wat was wat voorheen in die objekklas
sal outomaties gedefinieer word in 'n kat klas as well.
>> Behalwe dat, ons kleur definieer, ras en ouderdom, drie veranderlikes.
Dit lyk eintlik soos iets wat jy gedoen het voor.
Dit lyk soos struct.
Dit is basies die sintaksis vir struct verklaring,
en dit is heeltemal korrek.
En omdat ek voorheen genoem, die verskil 'n struct
en 'n voorwerp, een van die fundamentele verskille
is dat 'n voorwerp het metode, terwyl 'n struct het slegs veranderlikes.
So bo en behalwe die eienskappe of veranderlikes wat ons vir die doel geskep het,
ons spesifiseer paar metode.
>> Laat ons net hier sê dat ons twee metodes, een is miauw,
'n ander een is jaag muis.
Ons wil seker te wees wat verby 'n parameter gebaseer op ons vorige metode
verklaring patroon.
Jy het waarskynlik wil wees verby 'n muis.
En jy sal waarskynlik wil hê 'n Bool duidelik maak om terug te keer
As jou kat het suksesvol gevang die muis of nie.
>> Dit is die koppelvlak, maar ons kan sien dat die koppelvlak eintlik
doen niks.
Dit vertel net 'n program wat exists-- wat bestaan ​​in die RTT-klas.
So ten einde vir die program om iets te doen,
ons nodig implementering lêers te hê.
So hier is die eerste ding wat ons doen, is natuurlik ons ​​die invoer van die koppelvlak.
Nadat ons die invoer van die koppelvlak, Ons definieer die metode.
>> Laat ons net hier miauw sê wil net druk
"Hello World!" aan die konsole.
En na die implementering lêer, ons is redelik baie gedoen.
Dit is basies 'n klas verklaring vir een klas.
So nou is die vraag: hoe om 'n veranderlike verklaar jy dit?
Die manier waarop jy 'n klas gebruik om 'n te skep voorwerp in Objective C is hier geskryf.
>> Jy moet eers bepaal dat dit is 'n kat wyser,
want elke voorwerp in Objective C uiteindelik geïmplementeer as 'n wyser.
En jy die klas roep, noem hulle as alloc, wat is basies malloc,
vertel van die bedryfstelsel wat jy moet 'n paar geheue spasie vir hierdie voorwerp.
Na dat jy 'n voorwerp reeds en jy net inisialiseer.
Dit is net konvensie.
Ek weet dit is 'n bietjie vreemd, maar dit is eintlik hoe Apple dinge doen.
>> Toeken eiendomme eintlik redelik eenvoudig.
Dit is baie soortgelyk aan wat jy doen wanneer
jy 'n paar spesifieke toeken gebied binnekant van struct.
Jy moet net die veranderlike noem, die eiendom naam,
en 'n spesifieke waarde toe te wys.
En roep 'n metode is baie soortgelyk.
Die roeping van 'n metode is basies wat ek praat oor
vir 'n beroep op enige manier in Objective C.
>> Jy 'n voorwerp verby, in hierdie geval is dit gaan wees myCat,
en jy is die metode naam verby.
Asof jy praat met die voorwerp, myCat, sodat jy moet miaau.
Dit is redelik interessant.
Daarna, daar is een meer noodsaaklik ontwerp patroon
wat ons nodig het om te praat oor voordat jy na die werklike S-kode.
Dit ontwerp patroon genoem gebeurtenis gedrewe programmering.
Dit is waarskynlik ook een van die mees fundamentele idees in IOS programmering.
>> So het jy waarskynlik nie weet wat presies is die gebeurtenis gedrewe programmering,
maar dit is nie regtig so scary.
Wel, in werklikheid, het jy reeds dat voorheen gedoen.
Dit is een van die lyne wat jy het waarskynlik reeds in die laaste [onhoorbaar] geskryf
van CS50, google.maps.event.addListener (merker,
"Klik", funksie () {}) :.
Deur die roeping van hierdie lyn is jy wese vertel die rekenaar
dat wanneer die gebeurtenis genoem "Klik" gebeur op die merker,
gebruik hierdie funksie.
>> Dit is baie anders wat jy doen in mario.c.
In mario.c jy net hardloop die program een keer, dit gee jou 'n uitset,
en jy klaar is.
Dit is soort van soos een skoot programme.
Gebeurtenis gedrewe programme is baie, baie anders.
Kom ons dink, as Facebook is 'n een skoot program dit is nie regtig 'n goeie.
Jy gaan net om te Facebook een keer en dit is gedoen.
Dit gee jou 'n paar uitset en jy het nooit dit terug.
Jy het nooit enigiets meer.
>> So hier, veral die patroon wat ons gebruik is
gebeurtenis gedrewe, sodat elke funksie
word gevang op grond van wat gebeurtenis gebeur het.
Byvoorbeeld, as ons 'n knoppie en ons spesifiseer
dat wanneer die knoppie is gekliek, noem die funksie genoem "Hello World!"
Op dié manier kan ons regtig die funksie logika bestuur
vloei in 'n hoogs buigsame manier.
Die gebruiker kan doen of bel 'n funksie wat reeds genoem.
Dit is heeltemal gebaseer is op wat gebruikers doen.
>> Sodat ons kan sien dat dit ' eintlik baie beter as mario.c.
En goeie nuus is dat dit eintlik nie 'n nuwe konsep.
Julle het dit reeds gedoen dat in die laaste probleem stel.
So in Objective C daar drie verskillende diagramme
vir die gebeurtenis gedrewe programmering.
Die eerste diagram is genoem teiken aksie,
waar jy bind 'n knoppie pers met 'n funksie.
Laat ons net sê, wanneer jy kliek sommige knoppie, jy noem 'n funksie.
Dit is baie eenvoudig teiken aksie.
>> Die tweede een is eintlik die hardste een,
dit genoem afvaardiging op protokol.
Ons gaan om te verduidelik wat in groot detail later.
En die derde manier is kennisgewing.
Dit is eintlik nie baie belangrik so ver
as ons bekommerd, want die kans dat jy gaan kennisgewing te gebruik
in jou finale projek is redelik laag.
So ons gaan om daardie deel te slaan.
>> En ons gaan om te duik in afvaardiging op protokol.
So wat presies is 'n protokol?
Of wat presies is 'n afvaardiging?
Kom ons praat oor protokol om te begin met.
Protokolle is niks, maar die gebeure.
Maar hierdie gebeure word gegee aan jy deur Apple om te begin met.
Byvoorbeeld, ek is nie heeltemal seker hoeveel van julle
ouens gebruik Apple se oorspronklike app pos of kontak,
maar elke keer as jy blaai deur die tafel en druk die spesifieke sel
op die tafel, dit is 'n gebeurtenis.
>> En as jy wil om te doen so 'n geval deur jouself,
dit is eintlik 'n bietjie hard.
So Apple het dat selfs aan jou gegee sodat jy net kan direk gebruik
Indien jy iets op jou eie te doen.
Protokolle is eintlik regtig, regtig wyd gebruik
in Objective C. Wel in Trouens, elke enkele app
het iets gevang app afgevaardigde.
Binnekant van delikate is om al die protokolle vir die laai van die app.
>> Laat ons net sê daar is 'n gebeurtenis vir app het las.
So wat moet gebeur nadat jy geskep het 'n app, nadat jy die app oop,
nadat jy die app, of na jy sit die iPhone te slaap.
Dit is al die gebeure wat reeds vir jou gegee.
En oorspronklik in hierdie deeltjies sal daar geen implementering wees.
Apple het net gesê dat hierdie funksie sal gebeur wanneer 'n gebeurtenis gebeur,
maar wat jy doen met wat funksie is heeltemal aan jou.
>> Afvaardiging is basies vertel die klas
dat jy hierdie protokolle moet hanteer.
Dit is 'n bietjie verwarrend, maar dit sal wees
baie duideliker wanneer ons dit doen die s kodes in aksie.
Afvaardiging op protokol is eintlik 'n hoogs robuuste meganisme in die sin
dat as ons dit doen afvaardiging aan 'n spesifieke klas,
ons kan in wese hanteer alle vorme van gebeure
met behulp van 'n klas wat ons het, baie handige hulpmiddel.
>> So een vinnige voorbeeld vir afvaardiging op protokol
sal wees wat ek nou net gepraat oor.
Hierdie protokol spesifiek genoem word tableview [onhoorbaar] kies rol
by [? indeks?] [? verlede. ?] So dit 'n gebeurtenis wat gevang sou word wanneer jy
eintlik tik op 'n spesifieke sel in jou tableview,
laat ons net sê in jou e-pos of in jou kontakte app.
>> Binne 'n funksie daar was oorspronklik niks doen nie.
Die funksie nie enigiets doen by verstek.
Maar jy kan spesifiseer wat die funksie doen,
gegee wat jy wil uit jou app.
Baie handige hulpmiddel.
En met alles wat Dit gesê, ek het basies
dek 'n paar baie basiese sintaksis en fundamentele konsep van doelstelling C
ontwikkeling, en ons kan 'n paar s-kode doen.
Veel meer opwindend.
So s-kode is eintlik 'n bietjie oorweldigend
wanneer jy dit oopmaak vir die eerste keer.
>> Een vinnige nota, so as jy wil IOS ontwikkeling te doen,
Ek raai jy 'n Mac.
Omdat doen IOS ontwikkeling op Windows is regtig baie moeilik.
Dit is heel moontlik, maar dit is regtig moeilik.
En jy beslis doen nie wil g wysig om te gebruik.
So in s kode wat ons het verskillende gebiede.
Wanneer jy die eerste oop s-kode jy sal 'n navigasie area sien,
wat basies wys jou al die lêers wat in jou huidige projek.
>> Jy het 'n nutsbalk gebied, wat is basies die bestuur menings,
of 'n bietjie vinnige gereedskap oor s kode self.
En dit is die werklike redakteur gebied.
Hierdie gebied is baie soortgelyk g wysig, maar baie beter as g wysig.
En in hierdie reg area, is genoem die nut gebied.
Die gebied word baie handig wanneer jy skep koppelvlak of spesifiseer
'n paar vinnige Opstellings vir jou app.
>> En die finale gebied is die ontfouting.
Hierdie gebied bevat die konsole.
So wanneer jy printf sê, of nslog in ons geval,
al jou uitslae gaan hier gedruk.
Alle reg?
Ek dink ons ​​kan regtig vinnig te doen 'n voorbeeld vir IOS programmering.
En laat ons eintlik tot s kode oopmaak.
So elke keer as jy op s kode oopmaak, is dit gaan om te wys iets soos dit.
Dit gaan om jou te vra wat wil jy doen?
Jy wil nie om iets te begin random, 'n speelgrond, basies jy
kan net toets kode sonder eintlik pleeg enige app.
>> Wil jy 'n nuwe projek te skep?
Of wil jy om voort te gaan werk op die bestaande projek?
In ons geval gaan ons 'n nuwe projek te skep.
So dit is regtig mooi, s kode het eintlik reeds
aan jou gegee sommige templates vir die skep van voorwerpe.
As jy wil 'n speletjie om te doen, is kode eintlik 'n spel sjabloon vir jou,
het bladsy gebaseerde programme, blad gebaseerde program.
In hierdie geval, ons gaan iets baie maklik om te doen,
en ons gaan 'n te gebruik enkele uitsig aansoek.
>> Na wat net wat jy wil om te bel jou produk, en wat is jou naam,
Wat is jou identifikasie en watter taal gebruik jy.
Hier wil ons nie te kyk met behulp van Core Data.
Core Data is basies 'n databasis uit IOS.
As jy dit doen Core Data, is kode gaan definieer
'n baie meer ingewikkeld klasse vir jou.
So alles eenvoudig te hou, ons is net gaan om te doen sonder Core Data
nou.
>> Die probleem wat ons gaan wees gebruik van is that-- die probleem
ons gaan word skep, is dat ons basies wil Mario om die invoer van C
'n IOS app.
So kom ons noem dat Mario-IOS.
Natuurlik kan jy spesifiseer wat jy wil om te sit in jou projek.
En daar gaan ons.
>> So, dit is 'n bietjie oorweldigend, maar dit is eintlik
wat ons nou net gesien het op die skyfies.
En die eerste gebied nou sien ons is basies projek opset.
So alles wat jy wil doen projek, watter soort van die toestel,
laat ons net sê watter soort van die toestel wil jy jou app op verskyn?
Is dit die iPhone, iPad of universele?
So toestel oriëntasie, al hierdie dinge.
Nie baie belangrik, maar kon wees, maar dit
is 'n plek waar jy die opstel van jou projek as jy eintlik
wil sit vir die Apple winkel.
>> Alle reg, laat ons kyk na iets wat binne-in ons kode.
Kom ons gaan deur die lêer navigator.
En dit is al die lêers wat reeds gekom het met die sjabloon, baie mooi.
So wanneer ons kliek op een van hulle dit is wat dit lyk.
Baie soortgelyk aan g wysig.
Maar jy kan sien dat die accentuering is waarskynlik
'n bietjie mooier.
En dit is eintlik baie meer kragtig as g redigering.
En jy kan die motor volledige 'n baie van die dinge wat vir jou,
soos ons sal baie vinnig sien.
>> Kom ons maak die ontfouting area so goed.
Alle reg, soos ons kan sien, die konsole is reg hier.
Dit is wat jy gaan om te sien waar jy in printf of nsloging iets.
So sonder verdere uitstel het, laat ons eintlik stel om die jeug en kyk wat gebeur.
'N noodsaaklike funksie vir s-kode, is dat s-kode
kom met 'n iPhone simulator.
So jy hoef nie 'n te hê iPhone jou projek te probeer,
s-kode kan simuleer wat vir jy, soos ons kan nou sien.
>> Dit is redelik nice.
Dit is om 'n bietjie bietjie van die tyd op te stel
en basies ons 'n leë toepassing,
wat eintlik niks.
Maar dit stel.
Dit is pretty awesome.
Dit is baie beter as C, huh?
Alle reg, dan laat ons probeer om iets by te voeg.
Een lêer wat is 'n bietjie vreemd hier is storyboard genoem.
Dit is eintlik 'n groot, ontsagwekkende funksie vir s kode.
Want in s-kode, kan jy eintlik sleep en drop elemente op die koppelvlak
en dit sal direk wys.
Kom ons probeer dit.
>> Ons gooi 'n etiket hier, "Hello World !!!"
Ons kan sentrum wat.
Pretty cool.
Nou laat hardloop hierdie stop simulasie.
Hier het ons "Hello World !!!"
Ons het nie eens 'n kodering doen nie.
Wat die heck gebeur?
Dit is hoe kragtig Interface Builder kan wees.
Iemand het selfs gesê dat Jy kan waarskynlik net
voltooi 'n app sonder skriftelike waarskynlik 'n duisend reëls van die kode
net deur die gebruik van die Interface Bouwer.
Maar dit is waarskynlik nie die beste manier om dit te doen.
>> Nou laat eintlik kry om af te kodering.
So die struktuur vir die lêer is eintlik baie interessant
Omdat, soos jy kan sien, is daar geen hooffunksie oral.
Sien?
Soos ons reeds voorheen vermeld, jy kan sien dat hierdie
is 'n implementering lêer vir 'n spesifieke klas.
Maar daar is geen hoof oral.
So waar is die hoof?
Eintlik is daar 'n hoof, maar die belangrikste is eintlik verborge nie.
Die belangrikste is hier.
Dit lyk bekend.
>> So basies wat iOS doen binne belangrikste
is dat wanneer hoof is genoem, wat is basies
wanneer die app uitgevoer word, is dit skep 'n voorwerp genoem AppDelegate.
Soos ek voorheen genoem, die hele app is eintlik 'n voorwerp deur self.
So op hierdie manier, basies IOS app vertel die samesteller
dat OK, ek gaan om te skep 'n produk, genaamd AppDelegate,
en wat gaan my jeug te wees.
So jy moet gaan deur daardie AppDelegate
en sien wat die man doen.
My werk is vir my gedoen.
>> En in AppDelegate jy kan sien dat daar is 'n paar baie vreemde funksies,
Wel, eintlik metodes, wat Apple het reeds gegee het.
Wat is dit?
Dit is eintlik net protokolle dat ek kon praat.
So dit is gebeure wat Apple jou gegee het om te begin met.
Daar is niks in sommige van die funksies op die oomblik,
maar as ons wil inisialiseer iets vir ons app
voordat hy in die vertoon enige siening, ons doen wat hier.
>> Jy kan net lees die naam en ek dink die geval is eintlik baie duidelik.
So nou hoof geskep 'n voorwerp vir AppDelegate.
En wat AppDelegate gaan doen is eintlik ook vir julle verberg.
Die AppDelegate gaan begin laai die ViewController voorraad.
So dit is basies gaan om te begin laai al die standpunte wat jy het
en net lewer die oog gebaseer op die hiërargie.
>> So in hierdie geval het ons net een besigtig, wat is hier.
So dit is die enigste siening wat gaan genoem word.
Die ViewController logika is reg hier.
Dit is die kode wat eintlik beheer die oog sien ons net.
Alle reg, laat ons iets doen hier.
So viewDidLoad klink soos 'n gebeurtenis, terwyl dit in werklikheid is dit ook 'n afgevaardigde,
dit is ook 'n protokol.
>> Dus, wat die oog is gelaai, alles binne die funksie
sal genoem word.
In hierdie geval moet ons sien "Hallo Tianyu! "As ons die program.
Dit is om 'n bietjie stadig samestelling van storyboard lêers.
Wel wel, sien ons 'n uitset vir dit.
Dit is pretty cool.
Nou laat eintlik Mario doen.
Ek gaan die te definieer funksioneer baie vinnig.
marioWithLevels: (int) vlak resultate.
>> Alle reg, dit is eintlik die ontsagwekkende kenmerk van s-kode motor voltooiing.
So wanneer jy skryf vir en tik tik, dit reeds gegee om die sjabloon
vir jou, wat is pretty cool.
Dit moet regtig kyk vertroud met julle.
Jammer, dit is my skuld.
Alle reg, cool.
Dit logika moet lyk regtig vertroud vir julle ouens, veral net Mario.
>> Maar ons sal nou druk uit te die konsole elke keer,
want ons wil een of ander manier hou spoor van wat ons druk.
Ons gaan die gebruik lei een of ander manier later,
die gedrukte te vertoon uit lei tot die gebruiker.
So in plaas ons is net nslogging alles,
wat ons stoor alles in 'n funksie oproep gevolg,
maar die logika is presies dieselfde.
Nadat ons dit, ons klaar net ons resultate druk.
>> En hier in plaas van druk uit my naam, gaan ons 'n funksie te roep.
Kom ons kyk wat gebeur.
Oeps, natuurlik.
Ons het 'n lekker bietjie piramide hier.
Dit is basies C, ons is net manipuleer waar jy noem 'n funksie
en hoe 'n funksie lyk.
Daar is niks anders nie.
Maar dit is eintlik nie baie opwindend hier,
omdat ons nie sien nie iets van die iPhone app.
>> So as jy eintlik 'n iPhone app-- as jy eintlik Mario IOS reg
nou, jy gaan nie om iets te sien dat
het niks te doen met Mario omdat al die uitgange in 'n konsole
verborge van 'n gebruiker.
Dit is wat jy sien, wat is "Hello World !!!"
Nie goed nie.
Nou laat ons probeer om die gebruiker sien wat presies ons uit te druk.
Sodat ons nie nodig het om meer te etiketteer.
Kom ons probeer en uitvind iets anders wat nuttig kan wees.
>> Daar is eintlik een element wat genoem word
teks veld, wat kan baie nuttig wees vir ons.
Dit vertoon basies 'n streek van die teks wat geredigeer kan word.
Sodat lyk regtig nuttig.
Nou laat sleep dit en gooi dit.
Sjoe, ons het 'n teks oog in ons mening, regtig fancy.
Dit is 'n bietjie te groot.
Kom ons maak dit kleiner.
Sit dit in sentrum.
Maak dit kleiner as well.
>> Nou het ons 'n teks oog, wat ons kon word gebruik om ons finale uitslag te vertoon.
Maar nou is dit beslis nie gaan om te werk
want daar is no-- die ViewController ons net
gedefinieer nie weet dat daar is 'n teks oog daar buite.
So ons moet een of ander manier skakel die teks oog ons net
geskep met die klas wat het reeds saam met ons.
>> Die manier waarop ons dit doen is eintlik regtig magies.
So oopmaak storyboard.
Daar is 'n spesiale [onhoorbaar] genoem [? assistent?] [onhoorbaar].
As jy hier, dis gaan twee lêers oop te maak.
Een is 'n klas en die ander een is 'n ooreenstemmende oog vir dit.
Dit is baie, baie nuttig.
En laat ons gaan net deur die .H lêer.
Beheer, is dit [onhoorbaar] logika.
Press beheer en sleep die teks uitsig in die verklaring.
Ons gaan dit outputView te bel.
Koppel.
So hier het ons 'n nuwe verklaar eiendom vir ons ViewController klas.
En die nuwe eiendom is net die teks oog
ons geskep het in die koppelvlak gebou.
So in die manier wat ons kon toegang tot al die data
en manipuleer alles wat binne-in die uitset siening, wat is awesome.
>> So in ons werklike kode, Kom ons doen iets met dit.
So hierdie tyd wanneer ons is soos druk uit die finale uitslag vir Mario,
ons is in nie meld nie.
Ek bedoel ons kan hou die te meld verklaring.
Behalwe dat, ons stuur die Readout ons net
geskep om die uitset siening, wat is 'n UI textview ons het net '.
Nou laat ons kyk wat gebeur.
Wow.
Ons het 'n piramide in die app nou.
>> Sodat die gebruiker kan ons uitvoer omdat kyk Ons het die uitvoer van ons kode kopieer
ons koppelvlak.
Dit is redelik goed.
Dit is eintlik nie opwindend omdat ons can--
Al die inligting doen, is toon 'n piramide vir julle,
en daar is niks wat jy daaraan kan doen nie.
Dit is nie baie opwindend.
So nou, laat ons 'n knoppie dat die uitsig sal duidelik.
Blyk dat 'n knoppie nuttig sal wees.
Sleep.
Button een.
Button twee.
>> So wanneer ons kliek op die links knoppie, moet die oog verwyder.
Daar moet niks op die skerm wees.
En wanneer ons op die knoppie regs, Mario,
die oog gaan om weer te verskyn.
So op hierdie manier ons doen ook die magic stuff, beheer en sleep
aan die klas verklaring in die assistent director--
in die assistent kyker.
In hierdie geval is ons spesifiseer dat moet 'n aksie wees.
clearMario.
>> So hier het ons reeds geskep 'n aksie genoem clearMario,
wat is die metode wat genoem sou word wanneer ons druk die knoppie duidelik.
So in ons eintlik kode, laat ons net sit die uitset teks en die uitset oog
tot niks, en dat die manier dit sal lyk duidelik te wees.
Behalwe dat, laat ons ' 'n ander metode genoem runMario.
O jammer, dat jy nie moet 'n eiendom wees.
Alle reg, dat indien wees 'n aksie as well.
>> En wanneer daardie funksie is genoem, het ons net hardloop Mario tien.
Hopelik sal goed wees.
Is dit stel?
Ja.
Nou het ons 'n oog.
Ons het 'n uitset.
En laat ons net kyk wat gebeur.
Dit is verby.
Dit is weer terug.
So hier is ons het gespesifiseer watter soort funksie
sal genoem word wanneer ons tik in iets,
wanneer ons druk 'n spesifieke knoppie.
Dit is basies die teiken aksie skema
vir die gebeurtenis gedrewe ontwikkeling in Objective C.
>> Behalwe dat, dit is nie baie opwindende
want ons kan nie regtig verander hoe hoog die piramide sal wees,
sodat ons waarskynlik wil een of ander manier kry 'n toevoer van die gebruiker
en verander die hoogte van die piramide gebaseer op wat hulle uitset.
So ons gaan om dit te doen.
So hierdie tyd wanneer ons runMario noem, ons nie net Mario bel direk.
Hierdie een se titel.
>> Delegeer.
Dit is baie interessant.
Wat is 'n afgevaardigde?
Ek gaan self hier te plaas.
En ons gaan om te sien wat dit beteken later.
So hier het ons basies het 'n spesifieke geval bekend as 'n UI waarskuwing
oog.
A UI waarskuwing siening is basies wat jy wil
sien elke keer as iets Pops en vra dat jy vir insette,
soos wat sal gebeur wanneer jy probeer iets op 'n app store aan te koop.
>> Behalwe dat, nadat jy skep dit, ons wys net die waarskuwing.
Alle reg, laat ons net vinnig toets sal die werk of nie.
Dit is baie cool.
Nou laat eintlik skep 'n invoer veld vir die UI waarskuwing.
Dit is hoe ons dit doen.
En ons moet 'n insette oog vir die waarskuwing.
Baie cool.
Laat ons net sê 10.
>> Dit is nie om iets te doen reg nou, want die oproep eintlik
het nie verander vir die uitvoering van Mario.
So het dit 'n bietjie geword bietjie vreemd, want wanneer
ons druk 'n knoppie af, wanneer ons druk 'n knoppie in die waarskuwing oog,
iets moet gebeur, maar dit nie gebeur nie.
Hoe vang ons dit doen?
Hoe weet ons dat 'n gebruiker het die hand gewys 'n waarskuwing oog
en reeds ingeskryf vir 'n groot aantal, omdat nou niks eintlik gebeur.
>> Wel, jy kan raai dit reg, afvaardiging.
So in Benewens al hierdie verklarings,
ons moet 'n nuwe afvaardiging na te voeg dit genoem UI waarskuwing oog afgevaardigde.
Sodat elke enkele interaksie of gebeurtenis
dat ons gaan te hê met die UI waarskuwing oog
gaan hanteer word deur ons klas as well.
>> So in Behalwe dat, sal wees waarskuwing oog klik knoppie indeks.
Dit word bereik.
So in daardie geval het ons already-- so ons het
uitgevind 'n protokol wat sal die gebeurtenis toe te hanteer
ons op die gebraai knoppie op die uitkyk oog.
So elke keer as ons ignoreer die waarskuwing in gedagte, moet dit gebeur.
Laat my net toets dit baie vinnig.
Wel wel, het ons hier bereik.
>> So hier is, wat ons sal nie eintlik kry is eintlik
kry the-- So ons wil uit te kry die teks wat ons het voorheen
wat in die waarskuwing oog.
En gebaseer op die teks, is ons gaan Mario te vertoon.
Dit blyk baie vinnig uit As dit eintlik werk of nie.
So in daardie geval, as ons insette, kom ons sê, 10, moet ons sien 10.
>> Baie goed, ons het 'n aantal hier.
Dit is redelik goed.
Nou is die laaste stap sal dus die be-- laaste stap moet ons nou doen
is net 'n Mario bel met vlak gebaseer op die insette
sodat ons in waarskuwing oog gestel het.
So het ons nodig het om te sit hierdie string in IOS.
Statiese oorloop is baie awesome.
En dan het ons net self noem marioWithLevels waarde.
Kom ons kyk sal dit eintlik werk of nie.
>> Ons is reeds 'n piramide.
Kom ons probeer om die hoogte te verander.
Dit werk eintlik.
Dit is pretty cool.
Sodat nou kan jy net insette enige waarde wat jy wil.
Laat ons net sê vier.
Dit is pretty awesome.
So, dit is basies 'n baie vinnige voorbeeld
vir hoe om 'n projek in s-kode te skep en hoe om werklik te vinnig draad op
'n paar baie eenvoudige gebeure en funksies.
>> So het die bron gaan moet aanlyn later sit.
So as jy belangstel in hoe IOS Mario werk,
Ek gaan presies dieselfde stel projekte op die CS50 webwerf later.
Ons is basies klaar met die somer, en voor ons klaar
Ek wil net daarop wys julle ouens te sommige regtig awesome hulpbronne wat
is aanlyn beskikbaar.
>> Dit is duidelik dat die Apple dokumentasie gaan baie nuttig wees.
Maar in Behalwe dat ek veral beveel vier bronne,-kode skool,
boom huis, AppCoda en WWDC videos.
Kode skool en boom huis is twee online opvoeding webwerwe,
wat spesifiek fokus op sagteware-ingenieurswese.
Veral vir die kode skool, het hulle het regtig 'n goeie handleiding oor IOS.
>> Dit is 'n baie vinnige voorbeeld vir dit.
Hulle het eintlik 'n baie cute-- kyk na daardie klein oulike iPhone
dude daar, dit is pretty awesome.
En die manier waarop hulle verduidelik Doelwit C sintaksis is baie duidelik.
Tree huis is dieselfde.
En AppCoda is 'n forum.
Dit is eintlik 'n blog wat hardloop is deur 'n werklik ervaar doelstelling C
programmeerder.
En al daardie tutoriale in AppCoda is mooi kort en maklik om te implementeer,
sterk aanbeveel.
>> En as jy 'n ontwikkelaar, beslis gaan kyk
hoe die WWDC videos waar jy kan leer oor die nuutste IOS programmering
tegnieke, API's en biblioteke.
So dit is pretty much dit vir die seminaar.
Baie dankie.
En ek hoop jy het baie pret skep jou eie IOS app.