>> TIANYU LIU: Hey, ki jan nan li pral tout moun?
Lè sa a se app a iOS pwogram nan objektif seminè c.
Epi non mwen se Tianyu Liu.
Mwen se yon jinyò Lowell kounye a, konsantre nan syans òdinatè.
Se konsa, nan seminè sa a mwen se pral anseye ou nèg
yon ti kras sou ki jan fè yon app.
Yay, jwenn eksite pou li.
>> Se konsa, anvan nou menm kòmanse plonje nan bò kòt nan pwogram aktyèl,
kite yo jis vrèman byen vit pale sou poukisa ou ta ka vle bati yon app iOS?
Poukisa se konsa iOS pè?
Se konsa, pwoblèm nan premye, premye a bagay ki trè pè pou nou,
espesyalman kòm yon CS50 elèv, se ke iOS
sèvi ak Objektif C. Oke, gen nan yon nouvo lang ki rele Swift,
men nou pa ap ale nan sèvi ak sa nan seminè sa a.
Si w ap enterese nan Swift, gen se yon seminè endepandan sou sa.
Men, Objektif C se fondamantalman yon suransanbl nan C. Sa vle di
ke tout bagay ou itilize nan C kapab dwe tradui nan Objektif C
trè fasil.
>> Kòm ou ta ka wè pita, ki tout bon gen kèk sentaks trè debaz yo, yo se
fondamantalman egzakteman, an menm C ak Objektif C. Se konsa,
depi ou te pran CS50 moute sa a byen lwen, ou deja
konnen Objektif C, omwen 40%.
Epitou, Apple gen yon vrèman gaya API pou iOS.
Gen yon anpil nan reyèlman fou bagay ou ka fè ak li.
Youn nan ki se yon moun aktyèlman kreye yon app iOS
pou kontwole machin, ki se trè enteresan.
Pwobableman yon elikoptè se pi plis enteresan.
Men, sa a ki jan pwisan API la iOS kapab.
>> Ak jan ou ka gen kalkile kounye a,
debòde nan chemine se pwobableman youn nan pi enpòtan resous yo sou entènèt
disponib nan ou.
Ak bon nouvèl, pou chak sèl pwoblèm ou kapab pètèt
panse a pandan y ap bati ou pwojè final nan Objektif C,
gen chans yon repons chemine debòde.
Se jis pè.
Anplis de sa ak sa yo ki, iOS se reyèlman yon platfòm
kote ou ka rive jwenn yon gwo odyans ak efò ti kras.
Li pa nan renmen android, kote tout bagay nan bèl fragmenté.
>> Tout iOS se inifye.
E osi lontan ke ou kreye yon app pou yon ifon,
Ou ka trè fasil pò ki nan iPad, iPad mini, oswa gwosè diferan iPhone.
Sa yo se tout reyèlman bon.
Lè li nan jis reyèlman bon pou enpresyonan zanmi ou yo.
Ou ka jis kenbe yon iPhone epi di zanmi ou hey,
sa a se app a mwen fè.
Ou ka fè sa pou nenpòt ki apps Desktop, ki se bèl.
>> Tout dwa, kounye a kite a aktyèlman jwenn nan lang Objektif C. a
Se konsa, poukisa pa nou kòmanse ak kèk sentaks reyèlman de baz yo.
Kòm mwen mansyone anvan Objektif C Li nan fondamantalman yon suransanbl nan C.
Se konsa, yon anpil nan sentaks debaz yo aktyèlman ekzakteman menm bagay la.
Deklare yon varyab ak ajoute de varyab ansanm
se egzakteman jan nou te fè l 'nan Mario.
Pa gen anyen nouvo isit la.
>> Menm jan tou, locatè la pou riban ak kondisyon se tou menm bagay la.
Ou kapab fè yon pou riban menm jan ou te te fè nan yon Mario [fèbl].
Epi ou ka fè kondisyon menm jan ki sa ou
yo te fè nan kouche anvan p ou yo.
Sepandan, Objektif C se pa konplètman C,
epi gen se yon bagay ki se kalite etranj sou li.
>> Yon sèl nan premye ke yo te ke lè ou se fè pwogram C, ou tipikman rele
gen ladan ak Lè sa a yon non bibliyotèk.
Men, nan Objektif C ou rele ki enpòte.
Fondamantalman li di fonctionnalités, non jis diferan.
Epi strings yo se aktyèlman yon ti jan etranj.
Ou ka wè ke premye a bagay ki se kalite etranj
se ke ou gen yon bèl weird-- sorry-- ou gen yon bèl NS etranj
siyen sou isit la.
Epi bagay la dezyèm sa a, se kalite etranj
se ou gen yon nan siy anvan aktyèlman deklare fisèl la.
Se konsa, an nan siy fondamantalman vle ki yon kòd se pa sèlman yon fisèl,
li se aktyèlman yon objè.
Nou pral eksplike ki pita se konsa pa fè sa
panik si ou pa fè sa konprann sa sa vle di.
Ak enprime nan konsole se yon ti kras diferan paske nan C nou rele printf,
men nan Objektif C nou rele [fèbl].
>> Ou ka mande ki sa ki sa.
Sa se fondamantalman printf, jis yon lang diferan.
Egzakteman menm l 'a, egzakteman menm fonctionnalités la.
Oke, li sanble ke Objektif C aktyèlman
gen yon ns prefiks nan prèske tout bagay, chak kalite done debaz yo,
NSString, NSArray, NSDictionary.
Rezon ki fè la ke yo te ke ns aktyèlman vle di pou pwochen etap,
ki se yon konpayi ki Steve Travay te fonde,
ki se yon konpayi kote a lang Objektif C se fèt.
Se konsa, sa a se fondamantalman tradisyon.
Mwen konnen li nan yon ti kras etranj, men li la Apple.
>> Se konsa, yon bagay ki se menm weirder pase sa se yon deklarasyon fonksyon.
Sa a se trè diferan de sa ki nou wè nan C, paske isit la li aktyèlman
pa gade tankou C ankò.
Ki sa ou gen isit lan-- pa la fason sa a se pa yon pwen bal,
sa a se yon siy mwens.
Ou gen yon parantèz siy mwens anile ak Lè sa a non an fonksyon.
Kite yo jis di si nou gen alo mond, lè sa a
kalite a retounen ta dwe anile paske nou retounen pa gen anyen.
>> Ki sa ki vin vrèman etranj se ke lè w ap
gen plis pase yon paramèt pase nan yon fonksyon menm ki
pral reyèlman etranj menm jan yo montre isit la.
Nou gen yon non metòd, rele addInt [fèbl]
epi nou ap pase yon sèl paramèt.
Men, apre sa, nou gen plis metòd non apèl avèk yo.
Apre yo te fin ak nou ap pase dezyèm paramèt la.
Sa a se aktyèlman yon ti kras etranj, men tout deklarasyon fonksyon sa yo
swiv modèl la menm jan sa a.
>> Nou gen yon siy mwens yo kòmanse avèk yo.
Siyen an mwens ta kapab yon siy plis pafwa ki baze sou ki kalite metòd
se li.
Metòd se fondamantalman yon lòt non pou fonksyon.
Epi nou ap ale nan eksplike ke apre lè
nou ap pale de objè oryante pwogramasyon.
Ou premye presize retounen nan tape parantèz andedan,
apre yo fin ki vini non an metòd.
Ou ap pase yon sèl paramèt.
Men, si ou gen plis paramèt ou bezwen pou yon ekstansyon pou non an metòd
ak fondamantalman ekri yon bagay plis isit la.
>> Li ta ka anyen ou vle.
Nan ka nou an li nan avèk yo.
Men, ou te kapab di fen, oswa oswa, oswa abc plen ba, tou sa ou vle.
Lè sa a, apre ke ou se pase paramèt b.
Sa a se yon reyèlman etranj konvansyon men nou yo
ale nan wè poukisa Apple te fè sa trè vit.
Se konsa, kouman ou rele fonksyon?
Rele yon fonksyon nan Objektif C tou se diferan de C.
>> Aktyèlman, rele yon fonksyon nan Objektif C
se plis tankou w ap pale ak yon moun.
Isit la nou gen pwòp tèt ou, ki yo rele yon objè.
Ou ap fondamantalman di a objeksyon pwòp tèt ou yo di "Alo Mondyal!"
Sa se ki jan yo rele fonksyon an.
Yon objè ak yon non metòd konbine avèk youn ak lòt.
Lè sa a se kote ekstansyon an etranj pou metòd ki vrèman vin antre nan jwe.
>> Se pou yo gade nan dezyèm egzanp lan.
Nou jis defini yon metòd ki rele addInt ak bla bla bla.
Se konsa, nan ka sa a lè w ap rele ki [espesifik yo? mesaj?] li pral
yo gade tankou addInt pwòp tèt ou: 10 ak: 2.
Li son tankou angle.
Malgre ke fonksyon an deklarasyon fonksyon se etranj,
pwen an nan Objektif C a metòd deklarasyon modèl,
se ke lè ou ap rele fonksyon an oswa metòd
li pral son tankou aktyèl lang angle.
Se konsa, li trè entwisyon yon fwa ou jwenn nan li.
>> Espesyalman nan ka sa a, kote ou ka fondamantalman
wè ke non an fonksyon se sòt de dokimante tèt li.
Ou pa bezwen nenpòt plis eksplikasyon yo wè
ki sa egzakteman k ap pase, sa ki egzakteman yon paramèt fè.
Ale pi lwen pase sa, se pou yo pale yon ti kras ti jan sou pwogram objè oryante.
Objè oryante pwogram se youn nan pwogram nan fondamantal
teknik oswa modèl ki se itilize pa Objektif C. Objektif C
yo rele Objektif C, pa C, pou yon rezon reyèlman bon.
>> Se konsa, anvan nou jwenn nan Objektif C sentaks,
Se pou yo vrèman byen vit gade nan ki sa egzakteman se yon objè.
Nou te pwobableman fè yon bagay tankou objè anvan, ki
yo rele struct a lè ou se mete ann aplikasyon yon pye bwa oswa yon lis lye
oswa [? eseye. ?] Se konsa, li fondamantalman tankou yon struct,
men li la pi plis pouvwa anpil pase sa.
Yon objè gen metòd ak pwopriyete.
Metòd yo fondamantalman fonksyon.
Fondamantalman fonksyon ke yon espesifik nan yon objè ki sèten.
>> Ak pwopriyete yo fondamantalman nan jaden ou presize nan struct la.
Se konsa, pou chak objè yon sèl nou gen kèk pwopriyete
ki gen kèk varyab ki yo espesifik ak objè a.
Epi nou gen kèk fonksyon ki yo tou espesifik nan objè a.
Ak fonksyon yo yo rele yo metòd ak varyab yo yo rele yo pwopriyete.
Se jis yon non anpenpan.
Pandan ke ou reyalite, chak View sèl ou wè pandan y ap ou louvri yon app iOS,
kite yo jis di Twitter oswa Facebook, chak View sèl ou wè se yon objè.
E menm app a tout antye se yon objè yo kòmanse avèk yo.
Trè enteresan konsèp.
>> Epi poukisa nou vle objè oryante pwogramasyon?
Se konsa, ou ka imajine ke lè ou pwogram li vin trè konplike.
Kite yo jis di lè w ap mete ann aplikasyon echikye,
lojik la ki pral dwe vrèman konplike.
Ou gen 36 diferan moso, se konsa ke si ou
vle ekri lojik pou tout 36 moso diferan nan echèk,
ki nan ale nan gen yon anpil nan fonksyon diferan ak varyab.
Li se yon anpil nan pwoblèm.
Ak pwobableman w ap ale nan ekri yon diferan metòd oswa diferan fonksyon
pou chak nan moso nan egzakteman kontwole sa y'ap fè.
>> Men, si ou fè objè oryante pwogram, nan tout sa yo moso
ka distrè nan yon sèl objè.
Ak objè a ap gen kèk komen pwopriyete, tankou ki kalite moso
sa li ye?
Ki koulè sa li ye?
Ki jan yo ka li deplase?
Ak nan fason sa a ou gen anpil senplifye lojik la nan li.
Se konsa, li nan jis yon reyèlman bon fason fè pwogram konplike,
ak relasyon yerarchize nan pwogram nan, trè senp.
Kòm nou ap ale nan wè poukisa trè byen vit lè
nou ap aktyèlman fè Programming lè nou ap aktyèlman
fè yon kòd S pwogramasyon sesyon pita.
>> Oke nan adisyon a ki, objè oryante pwogram
se jis yon anpil plezi.
Ou te resevwa nan konsepsyon objè pwòp ou yo.
Ou te resevwa nan konsepsyon sa ki fè li gade tankou nan tèt ou.
Pa gen okenn repons dwa li.
Lè li nan totalman enteresan.
Se konsa, nan pwogram objè oryante, de konsèp fondamantal
yo pral klas ak egzanp.
Yon klas se fondamantalman yon modèl pou objè.
Ak yon egzanp se fondamantalman yon objè espesifik.
>> Kite yo jis di ou ap fè yon bonbon.
Nan ka sa a, chak yon sèl bonbon ou aktyèlman fini ak
a pwal yon objè.
Men, plak la bonbon ou itilize yo kwit tout bonbon yo pral gen yon klas la.
Yon klas se fondamantalman yon modèl.
Ak egzanp lan pral fè yon sèl espesifik objè kreye soti nan ki klas la.
>> Epi yo pral yon egzanp dwe kreye baze sou deklarasyon klas,
kòm nou pral wè nan glisad pita.
Se konsa, kite a aktyèlman fè yon reyèlman egzanp rapid [fèbl].
Se pou nou di nou ap deklare yon objè pou yon chat.
Objè a ta dwe have-- klas la chat ta dwe
gen kèk pwopriyete ak metòd.
Ki kalite pwopriyete yo ta dwe klas have-- ta dwe chat la genyen?
>> Pou egzanp, koulè, laj ak kwaze, moun
yo pral varyab ki yo espesifik nan chak chat.
Ak sa yo se kèk bagay ke nou itilize a dekri yon chat.
Ki kalite metòd, oswa sa ki ka yon chat fè?
Men kèk egzanp rapid ta dwe kouri dèyè sourit, manje pwason oswa jis Meow.
Sa a se yon vrèman rapid egzanp nan klas chat.
Ak yon reyèlman espesifik chat objè pral gen yon chat
kote nou presize an koulè, laj ak kwaze.
>> Nan ka sa a, objè nou an, se pa gen okenn ankò yon klas ankò.
Nou kopi modèl la nan klas la ak nou presize chak enfòmasyon espesifik
ak sa yo ki objè ki espesifik fè li endepandan.
Men, lè ou ap rele yon metòd andedan yon objè,
ou jis rele Meow sou objè a, ki se chat la ou jis kreye.
>> Pwobableman ou pral enprime soti yon bagay tankou "Alo Mondyal!
Meow. "
Joli bèl.
Tout dwa, kite yo jis jwenn nan kèk detay
ak wè ki sa egzakteman fè sa tradwi nan ke yo te pwogram iOS.
Se konsa, nan iOS pwogramasyon chak yon sèl pral klas kapab aplike nan de dosye.
Youn dosye se isit la, ki yo rele koòdone la.
Yon lòt dosye se isit la, ki yo rele aplikasyon.
>> Tipikman koòdone nan ap gen extension.h
kòm nou te wè nan C bibliyotèk yo.
Ak aplikasyon dosye se ale nan gen extension.n.
Li nan kalite etranj.
Men, .n vle di aktyèlman c, pa gen okenn diferans fondamantal ant moun
de.
Se konsa, nan ka sa a, nou ka wè ke nou ap deklare koòdone, chat: objè.
Sa yo rele pòsyon tè.
Nou ap fondamantalman derivan a klas chat nan klas la objè.
Se konsa, chak pwopriyete ak metòd ki te deja defini nan klas la objè
pral defini otomatikman nan yon klas chat kòm byen.
>> Anplis de sa ak sa yo ki, nou defini koulè, kwaze, ak laj, twa varyab.
Sa aktyèlman sanble yon bagay ou te fè anvan.
Li sanble ke struct.
Sa se fondamantalman sentaks la pou deklarasyon struct,
e ke se totalman kòrèk.
E depi mwen mansyone anvan, diferans nan yon struct
ak yon objè, youn nan la diferans fondamantal
se ke yon objè gen metòd, pandan y ap yon struct sèlman gen varyab.
Se konsa, nan adisyon a pwopriyete yo oswa varyab nou te kreye pou objè a,
nou presize kèk metòd.
>> Kite yo jis di isit la nou gen de metòd, se yon sèl Meow,
yon lòt se yon sèl kouri dèyè sourit.
Nou pwobableman vle yo dwe pase yon paramèt ki baze sou metòd anvan nou
deklarasyon modèl.
Ou pwobableman vle yo dwe pase yon sourit.
Men, ou pral pwobableman vle yo retounen yon bouleen siyifye
si chat ou a gen siksè kenbe sourit la oswa ou pa.
>> Sa a se koòdone nan, men nou kapab wè ke koòdone a aktyèlman
pa fè anyen.
Li jis di yon pwogram sa exists-- sa ki egziste nan klas la chat.
Se konsa, nan lòd pou nan pwogram nan fè yon bagay,
nou bezwen gen aplikasyon dosye.
Se konsa, isit la, premye bagay la nou fè se evidamman nou enpòte koòdone la.
Apre nou enpòte koòdone a, nou defini metòd la.
>> Se pou nou jis di isit la Meow ta jis enprime soti
"Alo Mondyal!" konsole la.
Apre yo te fin aplikasyon an dosye, nou ap bèl anpil fè.
Sa a se fondamantalman yon klas deklarasyon pou yon klas la.
Se konsa, Koulye a, kesyon an vin, ki jan ou deklare yon varyab?
Fason a ou sèvi ak yon klas yo kreye yon se objè nan Objektif C ekri isit la.
>> Ou premye presize ki sa a se yon konsèy chat,
paske chak objè nan Objektif C se finalman aplike kòm yon konsèy.
Epi ou rele klas la, rele yo kòm alok, ki se fondamantalman malok,
di sistèm nan fonksyone ke ou bezwen kèk espas memwa pou sa a objè.
Apre sa, ou gen yon objè deja epi ou jis inisyalize li.
Sa a se jis konvansyon.
Mwen konnen li nan se yon ti jan etranj, men sa a se aktyèlman ki jan Apple fè bagay.
>> Plase pwopriyete se aktyèlman trè senp.
Li trè menm jan ak sa w ap fè lè
w ap plase kèk espesifik jaden andedan nan struct.
Ou jis gen varyab la non, non an pwopriyete,
epi bay yon valè espesifik nan li.
Epi rele yon metòd se trè menm jan an.
Rele yon metòd la se fondamantalman ki sa mwen pale sou
pou rele nenpòt ki metòd nan Objektif C.
>> Ou ap pase yon objè, nan ka sa a li pral yo dwe myCat,
epi ou ap pase non an metòd.
Kòm si w ap pale ak objè a, myCat, ki ou ta dwe Meow.
Li trè enteresan.
Apre sa, gen yon sèl modèl konsepsyon plis esansyèl
ke nou bezwen pale sou anvan w pran aktyèl Kòd S.
Eske se sa ke modèl konsepsyon rele evènman kondwi pwogramasyon.
Sa a se tou pwobableman youn nan pi plis nan ide fondamantal nan pwogram iOS.
>> Se konsa, ou pwobableman pa konnen ki sa egzakteman se pwogram nan evènman kondwi,
men li la pa reyèlman ki pè.
Oke an reyalite, ou gen deja fè sa anvan.
Sa a se youn nan liy ki ou te pwobableman deja ekri nan dènye [fèbl a]
nan CS50, google.maps.event.addListener (makè,
"Klike sou", fonksyon () {}) :.
Lè w rele liy sa a ou se esansyèlman di òdinatè a
ke chak fwa evènman an rele "Klike sou" k ap pase sou makè a,
sèvi ak sa fonksyon.
>> Sa a se trè diferan soti nan sa w ap fè nan mario.c.
Nan mario.c ou jis kouri pwogram nan yon fwa, li ba ou yon pwodiksyon,
ak w ap fè.
Sa yo se sòt de tankou youn pwogram piki.
Evènman kondwi pwogram yo trè, trè diferan.
Ann imajine, si Facebook se yon yon sèl pwogram piki li pa reyèlman bon.
Ou jis ale nan Facebook yon fwa li fè.
Li ba ou kèk pwodiksyon epi ou pa janm te resevwa l 'tounen.
Ou pa janm te resevwa anyen plis.
>> Se konsa, isit la, espesyalman modèl la nou itilize se
evènman kondwi, se konsa ke chak fonksyon pral
dwe kenbe ki baze sou sa evènman te rive fèt.
Pou egzanp, si nou gen yon bouton epi nou presize
ke chak fwa se ke bouton klike, rele fonksyon an rele "Alo Mondyal!"
Nan fason sa a nou ka vrèman jere lojik la fonksyon
koule nan yon fason trè fleksib.
Itilizatè a ka fè oswa rele yon fonksyon ki te deja rele.
Li nan konplètman ki baze sou sa ki itilizatè fè.
>> Se konsa, nou ka wè ke sa a se aktyèlman pi bon pase mario.c.
Ak bon nouvèl se ke li nan aktyèlman pa yon konsèp nouvo.
Ou nèg te deja fè ki nan pwoblèm nan dènye mete.
Se konsa, nan Objektif C gen twa dyagram diferan
pou pwogram evènman kondwi.
Dyagram an premye se rele aksyon sib,
kote ou mare yon bouton laprès ak kèk fonksyon.
Se pou nou jis di, chak fwa ou klike sou kèk bouton, ou rele kèk fonksyon.
Sa a se aksyon sib trè senp.
>> Yon sèl nan dezyèm se aktyèlman youn nan pi di,
sa yo rele delegasyon sou pwotokòl.
Nou pral eksplike ki nan gwo detay pita.
Men, wout la twazyèm se notifikasyon.
Sa a se aktyèlman pa trè enpòtan osi lwen
kòm nou ap konsène, paske chans a ke w ap ale nan sèvi ak notifikasyon
nan pwojè final ou a se trè ba.
Se konsa, nou ap ale nan sote pati sa a.
>> Epi nou ap ale nan plonje nan delegasyon sou pwotokòl.
Se konsa, ki sa egzakteman se yon pwotokòl?
Oswa ki sa egzakteman se yon delegasyon?
Se pou nou pale sou pwotokòl yo kòmanse avèk yo.
Pwotokòl yo pa gen anyen men evènman yo.
Men, evènman sa yo yo bay ou pa Apple yo kòmanse avèk yo.
Pou egzanp, mwen pa konplètman sèten ki jan anpil nan nou
mesye itilize orijinal Apple la mail app oswa kontak,
men chak fwa ou woulo liv la tab ak laprès selil la espesifik
sou tab la, se sa ki yon evènman.
>> Men, si ou vle fè ke evènman nan tèt ou,
li la aktyèlman yon ti jan difisil.
Se konsa, Apple te bay sa menm nan ou se konsa ke ou ka jis sèvi ak dirèkteman
evènman an fè yon bagay sou kont ou.
Pwotokòl yo aktyèlman reyèlman, reyèlman lajman itilize
nan Objektif C. Byen nan reyalite, chak app sèl
gen yon bagay kenbe app delege.
Anndan nan delika se tout nan la pwotokòl pou chaje app a.
>> Se pou nou jis di gen yon evènman pou app te fè chaj.
Se konsa, sa ta dwe rive apre ou te kreye yon app, apre yo fin ou louvri app a,
apre ou fin fèmen app a, oswa apre ou mete iPhone a nan dòmi.
Sa yo se tout evènman ki gen deja ban nou.
Ak orijinal andedan sa yo patikil pa pwal gen okenn aplikasyon.
Apple te jis di ou ke sa a fonksyon pral rive lè kèk evènman rive,
men ki sa ou fè ak ki fonksyon se konplètman jiska ou.
>> Delegasyon se fondamantalman di klas la
ke ou ta dwe okipe pwotokòl sa yo.
Li yon ti jan ti kras konfizyon, men li pral
pi klè lè nou fè kòd sa yo nan aksyon.
Delegasyon sou pwotokòl se aktyèlman yon trè gaya mekanis nan sans
ke si nou fè delegasyon nan yon klas espesifik,
nou ka esansyèlman okipe tout kalite evènman
lè l sèvi avèk nenpòt ki klas nou genyen, trè pratik zouti.
>> Se konsa, yon egzanp rapid pou delegasyon sou pwotokòl
yo pral ki sa mwen jis te pale osijè de.
Pwotokòl sa a espesyalman te rele tableView [fèbl] chwazi wòl
nan [? endèks?] [? sot pase yo. ?] Se konsa, yon sa a evènman ki ta dwe kenbe lè ou
aktyèlman tape sou yon espesifik selil nan tableView ou,
kite yo jis di nan lapòs ou oswa nan app kontak ou.
>> Anndan yon fonksyon te gen orijinal fè anyen.
Fonksyon an pa fè sa fè anyen pa default.
Men, ou ka presize sa ki fonksyon an fè,
bay sa ou vle soti nan app ou.
Trè pratik zouti.
Se avèk tout sa ki yo te di, mwen fondamantalman
kouvri kèk sentaks trè debaz ak konsèp fondamantal pou Objektif C
pwogram, epi nou ka fè kèk kòd la.
Pi plis enteresan.
Se konsa, nan Kòd se aktyèlman yon ti kras akablan
lè ou louvri li pou premye fwa a.
>> Yon nòt rapid, se konsa si ou vle fè iOS devlopman,
Mwen trè rekòmande ou gen yon Mac.
Paske fè iOS devlopman sou Windows se reyèlman, reyèlman difisil.
Li nan pratik, men li la vrèman difisil.
Epi ou definitivman fè pa vle sèvi ak g modifye.
Se konsa, nan Kòd la nou gen plizyè zòn diferan.
Lè ou fèk louvri moute nan Kòd ou pral wè yon zòn Navigasyon,
ki fondamantalman montre a ou tout dosye ki se nan pwojè ou ye kounye a.
>> Ou gen yon zòn ba ikòn, ki se fondamantalman jere opinyon,
oswa kèk ti kras rapid zouti sou kòd la tèt li.
Lè sa a se zòn nan editè vrè.
Zòn sa a se trè menm jan g edite, men pi bon pase g modifye.
Ak nan zòn dwa sa-a, se rele zòn nan sèvis piblik.
Zòn nan vin reyèlman sou la men lè w ap kreye koòdone oswa espesifye
kèk dispozitif rapid pou app ou.
>> Ak zòn nan final la se debogaj la.
Zòn sa a gen konsole a.
Se konsa, chak fwa ou di printf, oswa NSLog nan ka nou an,
tout rezilta ou yo yo pral enprime isit la.
Tout dwa?
Mwen devine nou ka vrèman byen vit fè yon egzanp pou pwogram iOS.
Li kite yo aktyèlman louvri moute nan kòd.
Se konsa, chak fwa ou louvri moute nan kòd, li la pral montre moute yon bagay tankou sa.
Li nan ale nan mande w ki sa ou vle fè?
ou vle kòmanse yon bagay o aza, yon lakou rekreyasyon, fondamantalman ou
ka jis teste Kòd san yo pa aktyèlman komèt nan nenpòt app.
>> ou vle kreye yon nouvo pwojè?
Oswa ou vle kontinye ap travay sou pwojè a ki deja egziste?
Nan ka nou an, nou ap ale yo kreye yon nouvo pwojè.
Se konsa, li vrèman bèl, s Kòd aktyèlman gen deja
ban nou kèk modèl pou kreye objè yo.
Si ou vle fè yon jwèt, s Kòd aktyèlman gen yon modèl jwèt pou ou,
gen paj ki baze aplikasyon pou, tab baze aplikasyon.
Nan ka sa a, nou ap ale fè yon bagay trè senp,
epi nou ap ale nan sèvi ak yon sèl vi aplikasyon.
>> Apre sa jis sa ou vle rele pwodwi ou, ak sa ki nan non ou,
sa ki nan idantifyan ou a, ak ki lang ou sèvi ak.
Isit la nou pa vle tcheke lè l sèvi avèk Done Nwayo.
Done Nwayo se fondamantalman yon databasing iOS.
Si ou fè sa Done Nwayo, s Kòd ki pral defini
yon anpil kou plis konplike pou ou.
Se konsa, yo kenbe tout bagay ki senp, nou ap jis ale nan fè san yo pa Done Nwayo
kounye a.
>> Pwoblèm nan nou ap ale nan dwe lè l sèvi avèk se that-- pwoblèm nan
nou ap ale nan dwe kreye se ke nou fondamantalman vle enpòte Mario soti nan C
yon app iOS.
Se konsa, kite a rele ki Mario-iOS.
Natirèlman ou presize ki sa ou vle mete nan pwojè ou.
Apre sa, nou ale.
>> Se konsa, sa a se yon ti kras boulvèsan, men sa a se aktyèlman
ki sa nou jis te wè sou glisad yo.
Yo ak nan zòn nan premye nou wè kounye a se fondamantalman pwojè konfigirasyon.
Se konsa, tout bagay ou vle fè pwojè, ki kalite aparèy,
kite yo jis di ki kalite aparèy ou vle app ou parèt sou?
Èske li iPhone, iPad oswa inivèsèl?
Se konsa, aparèy Oryantasyon, tout bagay sa a.
Pa trè enpòtan, men li kapab, men sa a
se yon plas kote ou mete kanpe pwojè ou a si ou aktyèlman
vle deplwaye nan magazen an Apple.
>> Tout dwa, kite pou yo gade nan yon bagay ki se anndan Kòd nou an.
Se pou yo ale nan navigatè a dosye.
Ak sa yo, se tout dosye yo ki deja vin rive ak modèl la, trè bèl.
Se konsa, lè nou klike sou youn nan yo sa a se sa li sanble.
Sanble anpil ak g modifye.
Men, ou ka wè ke la sentaks eklèrsisaj se pwobableman
yon ti jan joli.
Ak li la aktyèlman pi plis pouvwa anpil pase g koreksyon.
Epi ou ka ranpli oto yon bann bagay sa pou ou,
kòm nou pral wè trè vit.
>> Se pou yo louvri zòn nan debogaj kòm byen.
Tout dwa, jan nou ka wè, konsole a se dwa isit la.
Sa a se sa w ap ale nan wè ki kote w ap nan printf oswa nsloging yon bagay.
Se konsa, san yo pa plis tarde, kite a aktyèlman konpile app a ak wè sa ki rive.
Yon karakteristik esansyèl pou Kòd la, se ke Kòd la
vini ak yon similatè iPhone.
Se konsa, ou pa bezwen gen yon iPhone eseye pwojè ou a,
Kòd la ka simulation ke pou ou menm, kòm nou ka wè kounye a.
>> Li trè bèl.
Li nan pran yon ti kras ti jan nan tan yo konpile
ak fondamantalman nou gen yon aplikasyon vid,
ki aktyèlman fè pa gen anyen.
Men, li compiles.
Li trè pè.
Li nan pi bon pase C, huh?
Tout dwa, Lè sa a, kite a eseye ajoute yon bagay.
Youn dosye ki se yon ti kras etranj isit la yo rele scénario.
Sa a se aktyèlman yon gwo, karakteristik pè pou Kòd la.
Paske nan Kòd la, ou kapab aktyèlman trennen ak gout eleman sou koòdone nan
epi li pral dirèkteman montre moute.
Ann eseye sa.
>> Nou lage yon etikèt sou isit la, "Alo Mondyal !!!"
Nou ka sant sa.
Joli fre.
Koulye a, kite a kouri sa a simulation kanpe.
Isit la nou gen "Alo Mondyal !!!"
Nou pa t 'menm fè nenpòt kodaj ankò.
Ki sa ki èk la k ap pase?
Sa a se ki jan pwisan Entèfas konstrukteur kapab.
Yon moun menm te di ke ou kapab pwobableman jis
ranpli yon app san yo pa ekri pwobableman yon mil liy nan kòd
jis lè l sèvi avèk Entèfas konstrukteur la.
Men, li la pwobableman pa fason ki pi bon fè li.
>> Koulye a, kite a aktyèlman jwenn desann nan kodaj.
Se konsa, estrikti nan pou dosye a se aktyèlman reyèlman enteresan
paske, jan ou ka wè, gen gen okenn fonksyon prensipal nenpòt kote.
Wè?
Kòm nou mansyone anvan, ou ka wè ke sa a
se yon dosye aplikasyon pou yon klas espesifik.
Men pa gen okenn nenpòt kote prensipal la.
Se konsa, kote se prensipal yo?
Aktyèlman, gen yon prensipal yo, men nan prensipal se aktyèlman kache nan men ou.
Prensipal la se isit la.
Ki sanble yo konnen yo.
>> Se konsa, fondamantalman sa iOS ap fè andedan prensipal
se ke chak fwa prensipal la se rele, ki se fondamantalman
chak fwa se app a egzekite, li kreye yon objè rele AppDelegate.
Kòm mwen mansyone anvan, tout la app se aktyèlman yon objè pou kont li.
Se konsa, nan fason sa a, fondamantalman an iOS app ap di du a
ki OK, mwen pral yo kreye yon pwodwi yo rele AppDelegate,
e ke a pwal app m 'yo.
Se konsa, ou bezwen ale nan ki AppDelegate
ak wè sa ki ke nèg ap fè.
Se travay mwen fè pou mwen.
>> Ak nan AppDelegate ou ka wè ke gen kèk fonksyon reyèlman etranj,
byen aktyèlman metòd, ki Apple te deja ban nou an.
Ki sa ki sa yo?
Sa yo se aktyèlman jis pwotokòl ke mwen te ap pale de.
Se konsa, sa yo, se evènman ki Apple te ban nou yo kòmanse avèk yo.
Pa gen anyen ki nan kèk nan fonksyon yo kounye a,
men si nou vle inisyalize yon bagay pou app nou an
anvan w pran nan montre nenpòt vi, nou fè sa isit la.
>> Ou ka jis li non an ak mwen devine evènman an se aktyèlman vrèman klè.
Se konsa, kounye a prensipal te kreye yon objè pou AppDelegate.
Ak sa ki AppDelegate ki pral fè se aktyèlman tou kache nan men ou.
AppDelegate a ki pral kòmanse chaje aksyon an ViewController.
Se konsa, li fondamantalman pral kòmanse chaje moute tout opinyon yo ke ou gen
ak jis rann gade nan baze sou yerachi a.
>> Se konsa, nan ka sa a nou gen sèlman youn vi, ki se isit la.
Se konsa, ki se gade nan sèlman ki k ap pase yo dwe rele.
Lojik la ViewController se dwa isit la.
Sa a se kòd la ki aktyèlman kontwole gade nan nou jis te wè.
Tout dwa, kite a fè yon bagay isit la.
Se konsa, viewDidLoad son tankou yon evènman, lè an reyalite sa a se tou yon delege,
sa a se tou yon pwotokòl.
>> Se konsa, kèlkeswa sa ki gade nan chaje, tout bagay andedan fonksyon an
pral rele.
Nan ka sa a nou ta dwe wè "Alo Tianyu! "Si nou kouri pwogram nan.
Li nan ap resevwa yon ti jan ralanti konpile dosye scénario.
Oke tout bon, nou wè yon pwodiksyon pou li.
Li trè fre.
Koulye a, kite a aktyèlman fè Mario.
Mwen pral defini nan fonksyone trè vit.
marioWithLevels: rezilta (Int) nivo.
>> Tout dwa, sa a se aktyèlman pè a karakteristik nan Kòd la fini oto.
Se konsa, lè ou ekri pou ak kalite antre nan, li te deja bay moute modèl la
pou ou, ki se trè fre.
Sa ta dwe gade vrèman abitye nan ou guys.
Padon, sa a, se fòt mwen.
Tout dwa, fre.
Sa lojik ta gade vrèman abitye ou nèg, espesyalman jis Mario.
>> Men, nou pral kounye a ekri ak lèt ​​detache soti nan konsole a chak fwa yon sèl,
paske nou vle yon jan kanmenm kenbe tras nan ki sa nou ap enprime.
Nou pral sèvi ak nan rezilta yon jan kanmenm apre sa,
yo montre enprime la soti lakòz itilizatè a.
Se konsa, olye nou ap jis nslogging tout bagay,
ki nou ap estoke tout bagay nan yon rezilta apèl fonksyon,
men lojik la se egzakteman menm bagay la.
Apre nou fini li, nou jis enprime rezilta nou an.
>> Ak isit la olye pou yo enprime soti mwen non, nou ap ale nan rele yon fonksyon.
Ann wè sa ki rive.
Wouch, evidamman.
Nou fè gen yon bèl ti kras piramid soti isit la.
Sa a se fondamantalman C, nou ap jis manipile kote ou rele yon fonksyon
ak ki jan yon fonksyon sanble.
Pa gen anyen diferan.
Men, sa a se aktyèlman pa trè enteresan isit la,
paske nou pa ap wè anyen nan men app a iPhone.
>> Se konsa, si ou gen aktyèlman yon ifon app-- si ou gen aktyèlman Mario iOS dwat
kounye a, ou pa ap ale wè nenpòt bagay ki
gen anyen fè ak Mario paske tout moun sa yo rezilta nan yon konsole
yo kache soti nan yon itilizatè.
Sa a se sa ou wè, ki se "Alo Mondyal !!!"
Pa bon.
Koulye a, kite a eseye fè itilizatè a wè ki sa egzakteman nou ap enprime deyò.
Se konsa, nou pa bezwen mete lejann sou ankò.
Ann eseye ak figi konnen yon bagay lòt bagay ki ta ka itil.
>> Gen se aktyèlman yon sèl eleman ki rele
jaden tèks, ki te kapab itil anpil yo ban nou.
Li fondamantalman montre yon rejyon nan tèks ki ka edited.
Se konsa, ki sanble vrèman itil.
Koulye a, kite a trennen l 'ak gout li.
Wow, nou gen yon View tèks nan nou wè, vrèman anpenpan.
Sa a se yon ti jan twò gwo.
Se pou yo fè li pi piti.
Mete l 'nan sant.
Fè li pi piti kòm byen.
>> Koulye a, nou gen yon View tèks, ki nou te kapab dwe itilize yo montre rezilta final nou an.
Men, kounye a li nan definitivman pa ale nan travay
paske gen yon no-- la ViewController nou jis
defini pa konnen ke gen yon View tèks yo deyò.
Se konsa, nou bezwen yon jan kanmenm lyen gade nan tèks nou jis
kreye avèk klas la ki te deja vini avèk nou.
>> Fason nou fè sa se aktyèlman vrèman majik.
Se konsa, louvri moute scénario.
Gen yon espesyal [fèbl] rele [? asistan?] [fèbl].
Lè ou klike sou ki, li nan pral louvri de dosye.
Youn nan se yon klas ak yon sèl nan lòt se yon View ki koresponn pou li.
Li trè, trè itil.
Li kite yo jis ale nan dosye a h.
Kontwòl, sa a se [fèbl] lojik.
Kontwòl Press ak trennen nan View tèks nan deklarasyon an.
Nou pral rele ke outputView.
Konekte.
Se konsa, isit la nou yo te deklare yon nouvo pwopriyete pou klas ViewController nou an.
Ak pwopriyete a nouvo se jis gade nan tèks
nou te kreye nan bilding lan koòdone.
Se konsa, nan fason sa a nou te kapab aksè tout done yo
ak manipile tout bagay ki anndan gade nan pwodiksyon, ki se pè.
>> Se konsa, nan Kòd aktyèl nou an, kite a fè yon bagay avèk li.
Se konsa, tan sa a lè nou yo se tankou enprime soti rezilta final la pou Mario,
nou ap nan pa antre anyen.
Mwen vle di nou te ka kenbe deklarasyon an antre.
Anplis de sa nan sa, nou voye sorti nan nou jis
kreye gade nan pwodiksyon, ki se yon UI textview nou jis kreye.
Koulye a, kite a wè sa ki rive.
Wow.
Nou gen yon piramid nan app a kounye a.
>> Se konsa, itilizatè a kapab wè pwodiksyon nou paske nou te kopye pwodiksyon an nan kòd nou an
koòdone nou an.
Li trè bon.
Li nan aktyèlman pa sa ki enteresan paske nou can--
Tout app a ap fè se ki montre yon piramid nou la a,
ak gen nan pa gen anyen ou ka fè sou li.
Li pa patikilyèman eksitan.
Se konsa, kounye a kite a fè yon bouton ki pral klè opinyon yo.
Sanble ke yon bouton yo pral itil.
Trennen ak gout.
Bouton yon sèl.
Bouton de.
>> Se konsa, lè nou klike sou bò gòch la bouton, gade nan ta dwe klè.
Ta dwe gen pa gen anyen sou ekran an.
Men, lè nou klike sou la bouton dwat, Mario,
gade nan ki pral parèt ankò.
Se konsa, fason sa a nou fè a tou majik bagay, kontwòl ak trennen
deklarasyon nan klas nan asistan director-- la
nan asistan visualiseur a.
Nan ka sa a nou ap espesifye ki ki ta dwe yon aksyon.
clearMario.
>> Se konsa, isit la nou te deja kreye yon aksyon rele clearMario,
ki se metòd la ki ta ka rele chak fwa nou peze bouton an klè.
Se konsa, nan aktyèlman Kòd nou an, kite yo jis mete tèks la pwodiksyon ak gade nan pwodiksyon
nan pa gen anyen, ak fason sa a li pral parèt yo dwe klè.
Anplis de sa ak sa yo ki, se pou yo kreye yon lòt metòd rele runMario.
Oh regrèt, ki pa ta dwe gen yon pwopriyete.
Tout dwa, ki ta dwe gen yon aksyon kòm byen.
>> Lè ke fonksyon se rele, nou jis kouri Mario dis.
Èspere ke sa pral vin amann.
li konpile?
Wi.
Koulye a, nou gen yon vi.
Nou gen yon pwodiksyon.
Li kite yo jis wè sa ki rive.
Sa a ale.
Li nan tounen ankò.
Se konsa, isit la nou te espesifye ki kalite fonksyon
pral rele lè nou tape nan yon bagay,
lè nou peze yon bouton espesifik.
Sa a se fondamantalman nan sib konplo aksyon
pou evènman kondwi pwogram nan Objektif C.
>> Anplis de sa ak sa yo ki, li pa trè enteresan
paske nou pa ka vrèman chanje kouman segondè piramid la pral,
se konsa nou pwobableman vle yon jan kanmenm jwenn yon D 'soti nan itilizatè a
ak chanje wotè nan la piramid ki baze sou sa yo pwodiksyon.
Se konsa, nou ap ale nan fè sa.
Se konsa, tan sa a lè nou rele runMario, nou pa jis rele Mario dirèkteman.
Sa a tit yon sèl la.
>> Delege.
Sa a se trè enteresan.
Ki sa ki se yon delege?
Mwen pral mete tèt isit la.
Epi nou ap ale nan wè sa sa vle di pita.
Se konsa, isit la nou te fondamantalman kreye yon egzanp espesifik yo rele yon alèt UI
vi.
Yon View alèt UI se fondamantalman sa ou pral
wè chak fwa yon bagay Pops leve, li mande w pou D ',
tankou sa ki pral rive lè w ap eseye yo achte yon bagay sou yon magazen app.
>> Anplis de sa ak sa yo ki, apre ou kreye li, nou jis montre alèt la.
Tout dwa, kite yo jis byen vit tès ap travay sa a oswa ou pa.
Sa a anpil fre.
Koulye a, kite a aktyèlman kreye yon jaden D 'pou alèt la UI.
Sa a se ki jan nou fè sa.
Apre sa, nou ta dwe gen yon View opinyon pou alèt la.
Anpil fre.
Kite yo jis di 10.
>> Li pa nan fè anyen dwat kounye a paske apèl la aktyèlman
pa t 'chanje pou egzekite mario.
Se konsa, sa a te vin yon ti kras ti jan etranj paske chak fwa
nou peze yon bouton desann, chak fwa nou peze yon bouton nan gade nan alèt,
yon bagay ta dwe rive, men li pa rive.
Ki jan nou trape sa?
Ki jan nou fè konnen ke yon itilizatè te anile yon View alèt
ak deja antre nan yon nimewo, paske kounye a pa gen anyen ki aktyèlman rive.
>> Oke, ou ta ka gen dvine li dwat, delegasyon.
Se konsa, nan adisyon a tout deklarasyon sa yo,
nou bezwen ajoute yon nouvo delegasyon li rele UI alèt View delege.
Se konsa, ke chak sèl entèraksyon oswa evènman
ke nou ap ale nan gen ak gade nan alèt UI
yo pral okipe pa klas nou an kòm byen.
>> Se konsa, nan adisyon a ki, yo pral alèt bouton View klike nan endèks.
Sa a se rive jwenn.
Se konsa, nan ka sa a nou gen deja- konsa nou gen
jwenn deyò yon pwotokòl ki pral okipe evènman an lè
nou klike sou bouton an Fè sou gade nan alèt yo.
Se konsa, chak fwa nou rejte a alèt vi, sa a ta dwe rive.
Kite m 'jis tès li trè vit.
Oke tout bon, nou te rive jwenn isit la.
>> Se konsa, isit la, ki sa nou pa pral aktyèlman jwenn se aktyèlman
jwenn the-- Se konsa, nou vle jwenn soti tèks la ke nou gen deja
antre nan gade nan alèt yo.
Ak ki baze sou tèks, nou ap ale nan montre Mario.
Sa a trè byen vit vire soti si li aktyèlman ap travay oswa ou pa.
Se konsa, nan ka sa a, si nou D ', kite la di, 10, nou ta dwe wè 10.
>> Li bon anpil, nou fè gen yon nimewo isit la.
Li trè bon.
Koulye a, dènye etap la ap be-- Se konsa, nan dènye etap nou bezwen fè kounye a
se jis yon rele Mario ak nivo ki baze sou D 'a
ke nou te mete nan alèt vi.
Se konsa, nou bezwen konvèti sa a fisèl nan iOS.
Anime debòde se trè pè.
Lè sa a, nou jis rele pwòp tèt ou marioWithLevels valè.
Ann gade pou wè ki pral aktyèlman ap travay oswa ou pa.
>> Nou ap deja bay yon piramid.
Ann eseye chanje wotè a.
Ki aktyèlman ap travay.
Li trè fre.
Se konsa, ki kounye a ou ka jis D 'nenpòt ki valè ou vle.
Kite yo jis di kat.
Sa a trè pè.
Se konsa, sa a se fondamantalman yon egzanp vrèman rapid
pou ki jan yo kreye yon pwojè nan Kòd la ak ki jan yo vrèman byen vit fil moute
kèk evènman vrèman senp ak fonksyon.
>> Se konsa, sous la ki pral yo dwe mete sou entènèt pita.
Se konsa, si w ap enterese nan ki jan iOS Mario ap travay,
Mwen pral mete ekzakteman menm bagay la pwojè sou sit entènèt la CS50 pita.
Nou fondamantalman ap fè ak nan pandan ete a, epi anvan nou fini
Mwen jis vle pwen ou nèg kèk nan resous vrèman fantastik ki
yo disponib sou entènèt.
>> Li evidan dokiman an Apple a pwal trè itil.
Men, nan adisyon a sa a, Mwen espesyalman rekòmande kat sous, kòd lekòl,
kay pyebwa, AppCoda ak WWDC videyo.
Kòd lekòl la ak kay pyebwa yo de sit edike sou entènèt,
ki espesyalman konsantre sou lojisyèl jeni.
Espesyalman pou Kòd lekòl yo, yo gen reyèlman bon leson patikilye sou iOS.
>> Sa se yon egzanp vrèman rapid pou li.
Yo aktyèlman kreye yon vrèman cute-- gade nan ki ti kras iPhone bèl
dude lòt bò a, li a trè pè.
Men, wout la yo eksplike Objektif C sentaks se parfe klè.
Tree kay se menm bagay la.
Epi AppCoda se yon fowòm.
Li nan aktyèlman yon blog ki te kouri pa yon reyèlman ki gen eksperyans C Objektif
pwogramè.
Apre sa, tout moun tutoryèl nan AppCoda yo trè kout ak pi fasil aplike,
trè rekòmande.
>> Men, si ou se yon pwomotè, definitivman ale tcheke
ki jan videyo yo WWDC kote ou ka aprann sou dènye pwogram nan iOS
teknik, APIs ak bibliyotèk.
Se konsa, ki se bèl anpil li pou seminè a.
Mèsi anpil.
Apre sa, mwen espere ke ou gen plezi kreye pwòp ou a iOS app.