RHED SHI: Maligayang pagdating sa tingnan CS50 pantas-aral - Panimula sa iOS. Salamat sa iyo para sa lahat ng mga darating. Umaasa ako ikaw ay tulad ng nasasabik bilang ako tungkol sa iOS. Noong nakaraang taon, kinuha ko CS50 bilang isang sopomor, at isa lamang ako natutunan iOS para sa aking huling proyekto. At iyon ay medyo - mabuti, ay hindi ito madali, ngunit may mga napakaraming mga tutorial support online. At talagang ako umaasa na may ito pantas-aral, Bibigyan kita ng guys ng ulo simulan sa iOS-unlad Kaya, sa mga tuntunin ng iOS-unlad, mayroong dalawang pangunahing mga bagay namin nais upang masakop ang araw na ito. Una, ang wika - ang wika ay magiging sa Layunin-C. Padadalhan ka namin ng aktwal na marinig isang bagay na talagang kapana-panabik. Kaya, maaari kang sumali ang buong Apple komunidad ng mga developer at bumuo ng ilang mga talagang kahanga-hangang apps. Gayundin, iOS 7 ay maganda, sana, sa ilan sa inyo. Ngunit ito ay kontrobersyal, alam ko. At higit sa lahat, kung ano ang nais kong gawin ay ang gabay sa iyo sa pamamagitan ng Layunin-C, at din Xcode, kung saan ay ang pinagsama-samang kapaligiran ng pagbuo na kailangan mong maging nagtatrabaho sa para sa iOS. At kaya, isang salita lamang sa Layunin-C. Talaga, ito ay ang eksaktong parehong bilang C, ngunit na may maraming mga iba pang mga bagay. At kaya, mas mahigpit na, ito ay tunay na isang super-set ng C. Kaya ang anumang bagay na sa iyo ang magagawa sa C ngayon, na talaga bang pset 0 hanggang 6, mo ang maaaring magawa sa Layunin-C. Kaya, huwag matakot sa palagay tungkol sa bagong wika na tina-pagpunta upang matuto. Nakalikha ka na sakop ng maraming ito, dahil ang lahat nagawa mo na ito C nakalipas semestre, maliban ka na ngayon ng pagpunta magkaroon ng maraming higit pa upang gumana sa. At tingin lang ako sa pagpunta sa magdadala sa iyo sa pamamagitan ng isang ilang mga halimbawa upang i-highlight ang ilang mga sa mga pangunahing pagkakaiba na nahanap ko ay talagang mahalaga kapag natutunan ko Layunin-C noong nakaraang taon. Well talaga, kaya, ang iba pang mga punto ay, Layunin-C ay, malinaw naman, object-oriented. At ipapakita namin talakayin Medyo tungkol sa kung ano ang ibig sabihin nito ay sa ibang pagkakataon. Talaga, ito ay tulad ng kung paano mo ay nagtrabaho sa structs sa nakaraang pset, may nodes at katulad ng iba pang mga mga bagay tulad na. Maliban, sa Layunin-C, lahat ng bagay ay ang isang bagay, at tapos ka pagpunta sa maging pagpasa sa paligid ng mga payo sa mga bagay sa halip na ang mga halaga ng kanilang mga sarili. Kaya, ito ay isang bagay na mahalaga lamang na dapat tandaan. Kaya, bakit hindi simulan namin kasama ang ilang mga pagkakaiba sa mga syntax sa pagitan ng C at Layunin-C? Gusto kong i-highlight ang # include, mo alam, standard io.h sa C at C + +, may ang Layunin-C bersyon ng iyon, na ay # pag-import, at pagkatapos ay isang uri ng header ng file. Sa kasong ito, magiging UIKit, mo alam, iwa UIKit.h. Maaari rin itong maging, alam mo na, MKMapview upang mabawasan nang malaki ka MKMapview.h kung gusto mo gawin, tulad ng, ang isang mapa sa loob ng iyong app. Katulad na mga bagay tulad na. Kaya, ang mahalagang bagay ay isama Nagbago na ngayong mag-import. Ngunit nananatiling pa rin ang ideya. Ikaw ay pagpunta sa ma-i-import ng isang uri ng header ng file papunta sa iyong programa. Gusto ko rin na i-highlight ang pagkakaiba sa pagitan ng printf at NSLog. Gayunpaman, tulad ng sinabi namin nang mas maaga, Layunin-C ay isang mahigpit na super-set ng mga C, na nangangahulugan na ang umiiral printf sa Layunin-C, masyadong. Subalit, karamihan sa mga tao huwag gamitin iyon. Karamihan sa mga tao gamitin ito NSLog dahil ito Nagbibigay sa iyo ng time stamp, at kami makita ito sa aksyon sa ibang pagkakataon. Ngunit, ito ay sa pangkalahatan ay isang mas kapaki-pakinabang paraan upang i-print ang mga variable. At gusto ko rin na i-highlight na NSLog tumatagal sa parehong lamang ang mga halaga ng placeholder bilang printf gumagana - kaya% d ay para sa isang int, % F ay para sa isang float. Gayunpaman, nais ko upang i-highlight ito napaka huling isa - NSLog% sa pag-sign - na ay isang placeholder para sa isang bagay. At tulad ng sinabi ko mas maaga, Layunin-C deal halos karamihan sa mga bagay, at kaya ito ay darating sa paggamit kapag nag- nais na i-print out, marahil, siguro isang NSArray, o NSDictionary, o isang NSString. Kaya, rin, mapapansin na, sa aming NSLog pahayag, mayroon kaming isang sa pag-sign sa harap ng mga panipi - na ay upang maging tanda ng mga string na, ngayon, sa Layunin-C mga bagay. Hindi na sila lamang pansamantalang trabaho mga bituin. Ang mga ito ay mga bagay at mga ituring bilang ganito. Kaya, ito ay talagang mahalaga na kapag mong gamitin NSLog tumatagal sa isang NS string, na nangangahulugan na kailangan mong magsama ng isang sa sa harap ng iyong quotation marks. At iyon ang dahilan kung bakit nakikita mo, dito, sa lahat ng ang aking mga function na tawag sa mga ito NSLog, ako magkaroon ng isang sa sa harapan ng mga quote, kahit bagaman ang% d at ang% f ay lahat ng parehong mula sa C. Ang anumang mga katanungan sa ngayon? Kukunin ko subukan upang pumunta sa pamamagitan ng ito mabilis kaya magkaroon kami ng mas maraming oras upang gumana may Xcode at Layunin-C, kaya na ka guys ay maaaring makakuha ng mas maraming pamilyar sa mga ito. Susunod, gusto kong i-highlight ang isang bagay conceptually mahalaga. Kaya, sa C, pinaka-bagay ang mga pag-andar. Gumawa kami ng isang function ng tawag. Ipinahahayag namin ang mga function sa ganitong paraan, na may unang-type ang mga balik, pagkatapos ay ang pangalan ng function, panaklong, at pagkatapos ay kahit anong argumento at ang uri ng mga argument ang gusto naming pumasa in At Layunin-C, dahil ang lahat ng bagay ay isang bagay o klase - kaya klase at sa bagay na dalawang termino na ay halos magkasingkahulugan sa bawat isa, kaya maaaring kong gamitin ang mga ito ng salitan sa buong seminar. Ngunit, makikita mo na mayroon kaming mga pamamaraan sa Layunin-C sa halip na pag-andar. At pamamaraan nabibilang sa mga bagay. Kaya tulad ng, siguro tumagal halimbawa, node - aming uri [hindi marinig] na node mula sa pset 6 o 5 - mayroon kaming ang salita, ari-arian, o sa susunod na node pointer. Mga Paraan ay simpleng pag-andar sa loob ng isang uri ng istraktura. Kaya, sa kasong ito, ang istraktura ay magiging ang bagay, at pagkatapos ay ang pamamaraan ay isang bagay na pagmamay-ari ang isang bagay. At ito ay kung paano mo ipinapahayag, uri ng, isang pamamaraan. Gusto mo magsimula sa, muli, ang return uri - kaya, sinubukan kong kulay Code ng key mga salita dito nang sa gayon ay guys ang makakakita sa, ng hindi bababa sa, pag-format pagkakatulad sa pagitan ng mga pag-andar pahayag at pamamaraan ng deklarasyon. Kaya, magsimula ka sa, alam mo na, sa isang pabalik na uri - sa kasong ito, ito ay isang array, o isang NSArray pointer - at pagkatapos ay mayroon kang ang pamamaraang ito. At pagkatapos ay, kung ano ang kawili-wili dito ay na sa halip ng pagkakaroon ng mga panaklong, namin may mga colons. At pagkatapos, sa harap ng aming mga argumento, namin ilagay, muli, sa mga panaklong ang uri sa aming mga argumento. Kaya, sa ngayon ay sinusubukan ko upang gumawa ng mga paghahambing sa pagitan ng, alam mo na, n at numero, dahil sila pareho tulad ng ints. At pagkatapos, ang iba pang isa ay isang uri NSUInteger. At pagkatapos ay, na may Layunin-C, kapag nag- nais magkaroon ng maraming mga argumento sa ang iyong paraan ng sugnay, mo, uri ng, ihiwalay ang mga ito out uri ng tulad nito - Hindi ako masyadong sigurado kung paano upang ilarawan ito, ngunit ito ay isang magandang halimbawa ng kung paano mo maaaring magkaroon ng maramihang mga argumento sa doon. Maaari mong, siyempre, ganap lamang huwag pansinin ang andArray tutuldok NSArray array kung ginusto mo ang isang pamamaraan lamang na tumatagal sa isang argument. Oo, pinag-uusapan. Madla: Sigurado parehong NSUInteger at Argumento NSArray na maaaring ay dadalhin sa sa loob ng NSArray? RHED SHI: Oo. Kaya, hayaan mo akong magpaliwanag. Kaya, oo. Kaya, ang tanong ay ang NSUInteger at NSArray * mga uri ng argumento, at iyon ang tama. Kaya, gusto mo palaging upang tukuyin kung ano ang uri ng iyong argumento ay. At dito, sinusubukan ko upang ipakilala sa ilan sa mga syntax at vocab ng Layunin-C, kaya doon ay mga aktwal na mga uri na ikaw ay pagharap sa. At bilang mapapansin mo, array ay hindi na, uri ng, simpleng bracket bagay. Ang mga ito ay mga bagay. Bagaman, kung pumunta kami sa susunod slide, maaari naming makita na aming makakaya hard-code ng NSArray sa Layunin-C sa lamang ng isang simbolo sa sa harap ng ang mga bracket. Hindi ako, talaga, medyo sigurado kung Ako syntactically hard-code na isang array tama para sa bersyon C, ngunit iyan ay ipagpalagay na maging sa isang C array. Kaya, ito ay kung paano gusto mo, alam mo na, di kaya gamitin ang mga function o ang mga pamamaraan na aming nilikha nang mas maaga. Mag-right? Kaya, ito ay kung saan namin magpahayag ng aming function at ang aming pamamaraan. At ngayon nais naming gamitin ang mga ito sa aming programa, at ito ay paano nais naming gawin ito. Kaya, sa C, magkakaroon ka ng, alam mo na, marahil, isang bool b, at itinakda mo ito sa kasing-halaga ang pag-andar, at pagkatapos ay kang pumasa sa mga argumento. Sa Layunin-C, ito ay medyo magkano ang parehong bagay. Mayroon kang NSArray * my_array, at ito ay pagpunta sa kasing-halaga - ngayon, ang tanging pagkakaiba dito ay ito bagay na bagay, na aming nai-highlight ko sa dilaw, at bilang maaari mong makita, sa C, mayroong walang iba pang mga kulay-dilaw na salita. At ito ay dahil nabibilang pamamaraan may partikular na bagay. Kaya na ang dahilan kung bakit kailangan ko upang magkaroon ng isang bagay iyon, isang uri ng, mga tawag na ito pamamaraan sa ang bilang zero, at pagkatapos ay ang NSArray a, b, c, d. Ang anumang mga katanungan sa iyon? Susubukan naming makita ang mga konsepto sa pagkilos medyo sa lalong madaling panahon kung kailan namin pumunta sa isang demo. OK. Ngayon, gusto kong makipag-usap nang kaunti sa madaling sabi tungkol sa Xcode 5, kung saan ay ang pinagsamang kapaligiran ng pagbuo ng na ikaw ay nagtatrabaho sa. Alam ko ng maraming mo, o ilan sa inyo, walang mga Mac, na isang problema dahil Xcode ay hindi magagamit para sa Windows at PC. Huwag akong tanungin kung bakit, ngunit marahil - oo, korporasyon. Anuman. Ngunit pa rin, sa gayon, humihingi ako ng paumanhin kung ang ilan sa mo kailangang i-download ang ilang mga uri ng virtual machine para sa Mac sa Upang magpatakbo ng Xcode 5. Ngunit ito ay isang medyo makisig software upang gamitin. At kaya, bago namin sumisid sa anumang uri ng demo, gusto ko lang ipakita sa iyo ang isang larawan ng kung ano ang hitsura ng Xcode tulad ng sa iyong window, at pagkatapos ay ring makipag-usap tungkol sa ano ito buong puwang ay. Kaya, ito ay uri ng tulad ng pag-aaral kung paano i- gamitin ang Microsoft Word, maliban na nais mong makakuha ng familiarized sa lahat ng iba't ibang bagay na ay pumunta sa dito. Kaya una sa lahat, nais kong ituro sa iyo sa toolbar sa itaas. Makikita mo na, sa tuktok, magkakaroon ka ng pangalan ng file - o, talaga, ang pangalan ng iyong proyekto at pagkatapos ang iyong pangalan ng file. Itala ng mga play at ang stop button. Iyon ang mga bago na kayo ginagamit upang patakbuhin ang iyong mga app sa simulator - ang iOS simulator. Ito ay awtomatikong ay may Xcode 5, kaya hindi mo na kailangang mag-alala tungkol sa pag-download ng isang uri ng simulator. Pindutin mo lamang play at pagkatapos ito ay nagpapatakbo ng iyong app. At maaari mong i-play sa paligid sa iyo, at makikita mo kung paano ito gumagana sa ibang pagkakataon. At pagkatapos, sa sentro, siyempre, ay kung saan lahat ng iyong mga magandang code ay pagpunta sa pumunta. At pagkatapos, sa kaliwa na bahagi, makakakuha ka mayroon ito, uri ng, folder - nabigasyon - at pagkatapos, makakakita ka rin ng iyon, kasama may icon na folder, mayroong isang bungkos ng iba pang mga icon doon na ay magiging kapaki-pakinabang sa ibang pagkakataon. At pagkatapos, sa kanang bahagi ay isang utility lugar kung saan maaari kang magtrabaho kasama ang ilan sa mga bagay at tukuyin, mo alam, kung ano ang kulay ay dapat, kung ano ang font ng teksto ay dapat maging, at iba pa. Kahit na, lahat ng bagay na gagawin mo sa utility area, maaari mong gawin sa code pati na rin. At kaya, ako mag-i-pagpunta sa pamamagitan ng dalawang mga halimbawa ng paggamit, lang, walang code na ito sa lahat - o napaka minimal na code - verses ang lahat ng mga code, kaya lang na guys kung ano ang iyong maaaring at hindi maaaring gawin sa Xcode at Layunin-C. At pagkatapos, sa wakas, down sa ibaba, mayroon kang debug area. Kaya, hindi mo na kailangang magpatakbo ng GDB, at iba pa, sa iyong mga programa. Ito ay awtomatikong ginagawa nito para sa iyo. At maaari ka ring mag-print bagay-bagay sa lugar na ito. Kaya talaga, sa ibang pagkakataon, aming ipadadala pumunta sa pamamagitan ng mario.c, kung maalala mo pa rin guys na, sa Xcode. Kaya na dapat maging masaya. At pagkatapos, lamang upang maibalik ito sa Layunin-C, gusto kong i-highlight kung ano maaari mong gawin sa kung pahayag. Kaya, alam mo na, dahil Layunin-C ay isang superset ng C, ang lahat ng bagay gawin mo ay, Literal, katulad ng C. mo lamang may bahagyang pagkakaiba. Kaya, mapapansin mo ang form na ito para sa isang kung pahayag ay pa rin ang parehong - mayroon kang kung, at pagkatapos ay mayroon kang mga panaklong sa isang kundisyon sa loob ng, ito at pagkatapos ay kulot tirante para sa anumang mo nais na gawin sa loob ng doon. Gayunpaman, nais kong ilagay up slide na ito dito, simpleng upang ilarawan iyon, dahil kami ay pagharap sa mga bagay ngayon, magkakaroon kami ng upang gamitin ang mga bagay na ito tinatawag na tulad ng, ay katumbas ng string, na ay, coincidentally, isang pamamaraan ng isang string o isang NSString bagay. Kaya, salita, sa kasong ito, ay isang NSString bagay, at mayroon itong isang pamamaraan na tinatawag ay katumbas ng string, at pagkatapos kami ay pagpasa sa isang hard-code na string upang makita kung ang mga ay pantay-pantay sa isa't-isa. Ang anumang mga katanungan sa ngayon? OK. At, gusto kong pumunta sa ibabaw isang pahayag para sa din. Kaya, halimbawa, kung gusto naming loop sa ibabaw ng haba ng isang string sa C, ito Dapat na pamilyar sa iyo. At, sa Layunin-C, nais ko upang i-highlight ito, uri ng, pamamaraan na tinatawag na bilang. Well, talaga, ipaalam sa akin tumagal lamang na bumalik. Bilang ay isang paraan ng array. Gayunpaman, ito ay higit na partikular isang ari-arian ng array, na ang dahilan kung bakit Maaaring gamitin ang pagtatanda na tuldok. Ngunit hindi ko nais upang makakuha sa masyadong maraming ng ito haka-haka ng bagay, gusto ko lang upang ipakita sa iyo kung paano magiging ganito ang mga bagay tulad ng sa Layunin-C kumpara sa C. At din, nais kong ituro iyon kahit Gumagamit ako ng NSUInteger sa harap ng lahat ng aking mga i sa Layunin-C, maaari mo ring gamitin int, dahil int ay lubos na wasto sa Layunin-C, din. Oo? Madla: ba ito lamang pangkakanyahan, o ay - RHED SHI: Oo. Kaya, bilang makikita mo - kaya, ang tanong ay ay na lamang ng isang pangkakanyahan isyu. Tulad ng makikita mo, mayroon akong, uri ng, bituin asterisk bagay down sa ibaba, at ang link na iyon ay dadalhin ka sa isang Stack Umaapaw bumuo, kung saan ang isang tao ay nagpapaliwanag ang pagkakaiba sa pagitan ng isang int sa NSInteger at isang NSUInteger. At gayon, maaari mong basahin ang tungkol sa na mamaya. Ang mga slide ay magiging, siyempre, magagamit mo. Ni makita Hayaan. OK, kasindak-sindak. Kaya, ito ay kasama rin sa slide dahil Akala ko ito ay isang mahusay na website na introduces sa iyo sa Layunin-C syntax. Kaya, talaga, bakit hindi kami lumipat sa Chrome at tingnan ang website na ito? Mag-right. Kaya, kung ano ang gusto kong ipakita sa iyo guys dito ay ang larawang ito. Kaya, ito ay, isang uri ng, magiging ano ka pagpunta upang makita ang loob ng anumang Xcode file. Talaga, bakit hindi tumagal lamang kami ng isang sandali upang, uri ng, tumagal ito in Kaya, ang aklat na ito - iyon ang bagay na iyon kami ay pagharap sa. At pagkatapos, ito ay malinaw naman pagpunta sa maging minana mula sa ilang iba pang mga bagay, ngunit hindi mo kailangang mag-alala tungkol sa na. At pagkatapos, ito, marahil, ay may ilang mga variable ng miyembro. Ang mahalagang bagay na gusto kong ipakita sa iyo ay ang pamamaraan Halimbawa, dito. Kaya, mga paraan ng halimbawa ay naitala sa pamamagitan ng ito minus sign. At pagkatapos, pati na mapapansin mo, kami ay na nagsisimula upang makita ang tularan para sa paraan ng pagpapahayag, tama? Ang uri ng return, ang pangalan paraan,, at pagkatapos ay ang uri ng mga argumento, at pagkatapos ay ang pangalan ng argumento. At ito minus sign nangangahulugan na ito ay isang pamamaraan Halimbawa, na nangangahulugan na ang mga pamamaraan na ito ay magagamit lamang sa mga bagay na na-instantiated. Upang paghambingin iyon, mga pamamaraan ng plus mag-sign sa harap ng mga ito ay mga klase pamamaraan, na nangangahulugan na maaari mong tawagin mga pamamaraan na ito, kahit na wala kang pa lumilikha ng isang bagay. Kaya, para sa isang malinaw na halimbawa, NSString ay isang klase. At maaari kang tumawag, halimbawa, mga pamamaraan ng klase sa NSString - ang aktwal na, tulad ng, salita NSString. Gayunpaman, upang magamit ang mga pamamaraan, na aktwal mong Kailangan mong lumikha ng isang string. Halimbawa, NSString star string ay katumbas ng sa panipi, kumusta mundo. At pagkatapos, maaari mong gamitin ang mga pamamaraan na ito - pamamaraan halimbawa - sa na kumusta mundo string. Kaya, na ang pagkakaiba sa pagitan ng Halimbawa pamamaraan at mga pamamaraan class. At, natatakpan lang namin ang bahagi na ito. Mga Katangian ay isa pang bagay na sa loob ng mga bagay, talaga. At ipinahahayag ninyo ang mga ito na may ang sa keyword ari-arian. Mayroon kang mga pagpipiliang ito, dito, na Ipapaliwanag ko mamaya kapag namin pumunta sa isang demo. Oo? Hi. Madla: Maaari ka bang mag-zoom in, mangyaring? RHED SHI: Oh yes. Sorry. Madla: Salamat sa iyo. RHED SHI: dapat na isang pulutong mas mahusay na iyon. Madla: Oo. Salamat sa inyo. RHED SHI: Oo, mangyaring ipaalala sa akin kung Nakalimutan kong mag-zoom in o zoom out. Kaya, ito ay ang lahat Nais kong upang ipakita sa iyo para sa - aba, na marami - para sa website na ito. Kaya, ng bumalik sa aming mga slide ipaalam. Talaga, ngayon ipaalam sa tumagal ng ilang sandali upang sumisid sa isang demo. Kaya, magsisimula kami sa isang bagong proyekto Xcode. Kaya, kung makikita mo buksan up Xcode sa lahat ng iyong machine, dapat itong tumagal ka ng ilang kung saan pahina sinasabi nito, tulad ng, alinman sa bukas up ng isang umiiral na proyekto o ng isang bagong proyekto, at dapat mong i-click ang isang bagong proyekto. At pagkatapos, dapat itong tumagal mo sa screen na ito. Oo? Madla: Kung wala kaming isang Mac, huwag lang namin uri ng chill? RHED SHI: O tumingin sa sa isang tao, oo. Oo. Maaari mong Chill, masyadong. OK. Kaya, kung ano kami ay pagpunta sa gawin una, ngayon, ay, talaga, ipinapadala namin ng pagpunta sa gawin ang isang iisang view ng application. Kaya, kung mapapansin mo, kung ano ang mahusay na tungkol sa Xcode at suporta para sa Apple developer ay na mayroon ka ng maraming mga template upang gumana sa na. Maaari mong, halimbawa, gumawa ng master-detalye ng application. Maaari kang gumawa ng isang laro - at talagang, hindi ko ay mapupunta sa laro, dahil laro ay isang iba't ibang mga kuwento para sa iOS-unlad. At sila ay uri ng naka-hiwalay, kaya hindi ako ay pumunta sa na. Pagkatapos, mo pa-based na pahina mga application. Mayroon kang isang application na tab - kaya gusto, halimbawa, Bank of America marahil ito ay, tulad ng, isang naka-tab na app. Ito ay ang mga bago kung saan mayroon kang ang mga pindutan sa ibaba. At pagkatapos, mayroon kang isang Kit laro engkanto. O maaari mong gumana mula sa simula, na ay kung ano ang gagawin namin sa ibang pagkakataon. Ngunit sabihin, una, magsimula sa nag-iisang view ng application. Pagkatapos, magkakaroon ito humingi ng isang pangalan ng produkto, at maaari naming gawin lamang pagsubok. Pangalan ng samahan - kaya, pangalan ng samahan, identifier kumpanya - mga mahalaga kung ikaw ay pagpunta upang ilagay ang iyong mga app sa tindahan app. Iba pang mga kaysa sa na, ang iyong code ay pagpunta sa magpatakbo ng walang pasubali fine wala ito. Ito ay magiging mahalaga kung ikaw gusto - kaya, per se, tulad ng, ilagay ang iyong mga app papunta sa iyong telepono o isang bagay, at pagsubok ito, alam mo na, sa tunay na buhay - ito ay magiging mahalaga. Ito ay may gawi na karaniwan ay maiuugnay sa isang uri ng developer account may Apple. At oo, alam ko, marahil, ng maraming mo ay hindi magkakaroon ng anumang mga developer account. Alam ko ang unibersidad ay may isa. Sa tingin ko CS ay may isa. Subalit, maaari mong i-email sa akin at kukunin ko na subukan upang malaman na out para sa iyo. Ngunit ngayon, ako lamang ilagay sa ilang mga placeholder bagay dito. At mo maaari, siyempre, narito, piliin kung nais mong maging tanging sa iPhone, iPad sa, o pareho - unibersal na application. Kaya, sa ngayon, ni gawin unibersal na ipaalam, lamang upang makita ang magkabilang panig ng platform. Ni makita Hayaan. Kaya, sa ngayon, pupuntahan ko upang i-save ito sa ilang mga uri ng mga folder. Hindi ba mahalaga kung saan - ka malilipat palaging ito sa ibang pagkakataon. At, ngayon, kami dinala sa aming mga proyekto Xcode. Hindi ko nais mag-alala tungkol sa lahat ng ito. Imumungkahi ko ang hindi pagpindot sa alinman sa ito, maliban kung alam mo kung ano mismo ang na ginagawa mo. Kaya, lahat ng ito, balewalain lang para sa pinaka-bahagi. Hindi mo na kailangang pindutin ito, at kung iyong gawin mo Nagkamali ilang mga bagay dito, ito ay makakakuha ng isang maliit na nakakalito. Kaya, bakit hindi namin tumingin sa ang mga file sa kaliwete bahagi sa aming navigator. Dito, mayroon kaming AppDelegate.h. Mayroon kaming AppDelegate.m Kaya, bilang makakakuha ka paunawa, na header kami ng mga file, na nagtatapos sa tuldok h, at mayroon kami pagpapatupad - talaga, hayaan mo akong mag-zoom in OK. Hayaan akong mag-zoom in Kanan, kaya mo na header file at mayroon kang mga file pagpapatupad. Talaga - OK. Ito ay isang maliit na kakaiba, ngunit makisama sa akin. Pagkatapos, dahil pinili namin ang isang solong pagtingin application, kami ay pagpunta sa maging nagtatrabaho sa storyboard. Kaya, storyboard ay isang bagay na Apple Napag up sa upang makatulong na talaga mga nag-develop mabilis prototype ang kanilang mga application. Kaya, ito ay kung saan maaari kang lumikha isang app nang hindi nagsusulat ng iisang linya ng code. Gayunpaman, sa aming nag-iisang application view, kami, siyempre, magkaroon ng isang mag-file para sa aming mga view, na ay isang view ng controller. Kaya, mayroon kaming mga header at ang pagpapatupad file, dito. At, ako pagpunta sa mag-zoom out ngayon dahil kailangan namin upang gumana sa storyboard. Kaya, narito ang aming mga view. Kung namin, simpleng, patakbuhin ang app ngayon, mayroong hindi magkano ang kapana-panabik na nangyayari. Kaya, makikita mo ang puting screen. OK? At, sa aming mga utility lugar, maaari naming magdagdag ng ng grupo ng mga iba't ibang mga bagay na ito. Kaya, kapag ikaw ay pagharap sa mga screen sa iOS, pagtingin controllers ay ang mga bagay na encapsulate, uri ng, ang iyong mga tanawin. Kaya, isang view controller palaging ay tinatawag na isang ari-arian view. At view na iyon, karaniwang, naglalaman, mong malaman, kung ano ang gusto mong makita sa isang screen. Kaya, mahusay, magsimula lamang sa pamamagitan ng paglalagay ng ipaalam, marahil, marahil ng isang label. Kaya, ni maglagay ng label sa doon hayaan - ilagay ito sa gitna. Kaya, ngayon na na-click ako sa label, ako Maaari pumunta sa ang mga katangian ng inspector at simulan ang pagbabago ng halaga nito. Tumawag ni ito CS50 Colours Hayaan. At, maaari din ko babaguhin ang font. Kaya, sa halip ng sistema, ang paggawa na kung saan ay ang default na, maaari naming gawin ang isang pasadyang isa. Maaari naming baguhin - alam mo na, UltraLight, gawin itong 32. At pagkatapos, maaari kaming magsagawa ng aming mga kahon mas malaki. Madla: Huwag sa tingin mo na maaari mong mag-zoom sa sandali lang higit pa, marahil? RHED SHI: Oo? OK. Madla: i-tap lamang ito? RHED SHI: Sabihin makita. Gumagana ba ito gumagana? Madla: pumasa lang ang Xcode? RHED SHI: Oo naman. OK. Kahanga-hanga. Madla: Ang label na sa ilalim? Ang label? RHED SHI: Ano iyon? Ano drop-down: madla ay ang label sa ilalim? RHED SHI: Kaya, ang tanong ay, kung ano drop-down ay ang label sa ilalim? Ito ay dapat, nang simple, maging sa ilalim dito. Hulaan ko ito ay isang kubo na bagay. Ngunit karaniwan, ito ay ang default na - Lamang ako pupunta pababa dito hanggang sa nakahanap ako ng label. Oo. Kaya ngayon, mayroon kaming ang aming mga label. Ni igitna ito Hayaan. At Xcode nagbibigay sa amin ng mga alituntunin para pagsasentro bagay. Kaya, magpatakbo ng muli ang aming code ngayon hayaan. May pumunta namin. Kaya, mayroon kaming CS50 Colours. At ngayon, maglagay ng isang pindutan ipaalam sa doon, tama? Dahil nais namin na gawin ito interactive. Kaya, maglagay ng isang pindutan dito ipaalam. At kami tumawag pindutan ng "i-tap ito dito upang magpatuloy. "Magpapadala kami na nakasentro ito, din Talaga, na-nakasentro. Oo. Kaya, ngayon ay mayroon kaming isang pindutan. At kung tumakbo namin ito muli, kami ay pagpunta magkaroon dito gandang maliit na pindutan. At maaari kong i-click ito, ngunit hindi ito gumagawa ng anumang bagay, dahil hindi pa kami tapos anumang bagay na may button pa. Kaya, lumikha ng isa pang view ng ipaalam, i-right? Kaya, sabihin nating gusto kong i-tap na pindutan at ko nais upang pumunta sa isa pang pahina - isa pang view. Ano pupuntahan ko lang gawin ay, maaari ba akong lumikha isang view ng controller, tama? Ngayon makikita-click ako sa aking pindutan, at pagkatapos, ang mahalagang bagay ay, pupuntahan ko i-click ang - o - oo, pindutin ang control na sa aking keyboard. Control. Mag-click sa pindutan, at pagkatapos ay i-drag. Kaya, tandaan na matagal ang control key. Ni umulit na Hayaan. Kaya, pindutin nang matagal control, i-click at i-drag sa kung ano ang gusto mong gawin. OK. At ngayon, mayroon akong ilang mga pagpipilian dito. Maaari ko alinman itulak, o maaari kong gawin ang isang modal, o maaari kong gawin ang isang pasadyang. Itulak ay lamang kung mayroon kang isang nabigasyon controller. Sa ngayon, ang aming pinakaunang pagtingin controller ay hindi sa loob ng anumang nabigasyon controller. Kaya, ang navigation controller ay ang isa na nagbibigay sa iyo ng back button sa ang iOS app kung saan mayroon kang, alam mo na, na tuktok, uri ng, makapal bar - kung saan maaari kang bumalik, o pasulong, at iba pa. Sa ngayon, hindi ko mayroon na. At kaya, na ang dahilan kung bakit hindi ko maaaring gawin ang isang push. Kaya, nag-click ako sa push aksidenteng, dito. At talagang, magpatakbo ng code ipaalam, at dapat itong nagka-crash sa akin. Tanging kung pindutin ko ang pindutan ng bagaman, kaya - karapatan. Kaya, ito ay masama. At, tulad ng maaari mong makita, narito, kami mayroon ang mensahe ng error. Kaya, "Push segues maaari lamang gamitin kapag pinagmulan controller ay pinamamahalaan sa pamamagitan ng isang Halimbawa ng UI nabigasyon controller. " Kaya, dahil hindi ito ay sa loob ng isang nabigasyon controller, Hindi ko gawin iyon. Kaya, sa ngayon, Pupunta ako pabalik sa folder, pagpunta pabalik sa storyboard. Madla: Ano ang nabigasyon controller, muli? RHED SHI: Kaya, ngayon ko makikita ipakita sa iyo. Ni makita Hayaan. Kaya, Pupunta ako sa mag-click sa view na ito controller, at pagkatapos ay pupuntahan ko pumunta hanggang sa produkto - talaga, hindi, paumanhin - editor. At ako pagpunta sa pumunta sa - talaga, nag-click ako sa ito? Hindi. May pumunta namin. Pupunta ako sa pumunta up sa editor, bumaba upang i-embed sa, at pagkatapos nabigasyon controller. OK. At, mukhang talagang marumi ang aking workspace, kaya ni linisin ito up ipaalam. Kaya, ang lahat ng mga ito ay storyboard. At sa ganitong paraan - OK, itigil - Maaari ba akong mabilis bumuo ng isang bagay tulad nito. At pagkatapos ay, ngayon ay maaari kong bumalik, kilala mo? Ngunit sa karapatang ito ay uri ng mayamot,? Kaya, kung ano ang gusto kong gawin ay, hindi ko gusto upang gumawa ng, lamang lamang, isang view controller. Sabihin nating Nais kong talagang gumawa ng isang view ng talahanayan controller, sa gayon ay maaari kong ilagay sa ang ilang mga magandang mga kulay, sa talahanayan. Kaya, ngayon na ako ilagay sa aking view ng talahanayan controller, kailangan ko upang ikonekta ito pabalik mula ang pindutang ito upang ang view ng controller. Kaya kailangan kong gawin ang aking mga kontrol, click, i-drag bagay muli. At ngayon maaari kong gawin push, dahil i-embed ko ito sa loob ng isang navigation controller. Madla: Navigation controller lamang nagpapahintulot sa iyo na lumibot? RHED SHI: Oo. Kaya, higit technically, ito ay isang bagay na kung saan - kaya, sa loob ng nabigasyon controller bagay, ito Sinusubaybayan ng isang array. At na array hold ang lahat ng mga kasunod tingnan controllers. Iyon ay kung bakit kapag pinindot mo pabalik, ito napupunta bumalik sa nakaraang pahina. Dahil ang navigation controller bagay, o ang code na tumatagal ng pag-aalaga ng sa bagay na ito, ay may isang array na mapigil ang subaybayan ng mga controllers view, at Maaari pagkatapos, alam mo na, DQ ang view controller at bigyan ka pabalik sa isang nakaraan. Kaya, ito ay teknikal na mga bagay-bagay, ngunit - at kukunin ko na ipakita sa iyo sa ibang pagkakataon sa code, kung kami ay may oras. Uri ng Nauubusan na ako sa oras, ngunit - Kaya, sa view ng talahanayan, kung ano ang maaari naming gawin ay - Karaniwang Ito ay awtomatikong nakatakda sa Dynamic na prototype - kami ay pagpunta sa gawin itong Static Cell, kung hindi man kami ay pagpunta sa tumakbo sa ilang mga problema. At pagkatapos, sabihin nating pupuntahan ko upang magkaroon ng isa seksyon. Kaya, mga seksyon ay tulad ng - kung kailanman na iyong nakita ang musika app, kapag mayroon kang mga artist, mga seksyon ng ginagawa maging ang A sa pamamagitan Z's - ang mga titik - at pagkatapos, alam mo na, ang mga indibidwal na hilera ay magiging ang pangalan ng artist. At oo, ano ang mga cool na dito, ay na maaari kong ma-access ang lahat ng mga bagay sa loob ng aking mga storyboard sa pamamagitan na ito drop-down na menu, masyadong. Kaya, Pupunta ako sa mag-click sa aking seksyon, at gusto ko, alam mo na, siguro limang mga hilera. At pagkatapos, sa loob ng bawat hilera, Gusto kong maglagay ng label. At ako pupunta itawag sa Blue. At pagkatapos, gusto kong maglagay ng view ng UI, mo alam, siguro para sa, tulad ng, ang isang maliit na kahon. Kaya na maaari kong ipakita sa mga tao isang preview ng kulay. At kukunin ko na bumalik sa ari-arian at baguhin ang kulay na sa, oh, gagawin ko hindi alam, ang isang ito. At pagkatapos, mapapansin din, dito, kapag mayroon akong ang mga accessory, maaari ba akong magkaroon ng maraming ng iba't-ibang mga accessories ay karaniwan kang makakakita. Ang tagapagpahiwatig pagsisiwalat, ang detalye, o check mark, o simpleng lamang ang detalye. Kaya, siguro maaari naming gawin, gaya ng, isang pagbubunyag tagapagpahiwatig, halimbawa. At pagkatapos ay, bakit hindi nagsasagawa kami ng mga, kopya ilagay ang mga ito, at ilagay ang mga ito sa susunod na talahanayan hilera. Kaya, maaari naming tumawag ito Dilaw. At maaari kong magkaroon para i-extend ito. Ni gawin itong dilaw Hayaan. At sa paraang ito, maaari naming kopyahin i-paste ang aming paraan pababa. Ano ito? Lila. Kaya, ang mga ito ay ang lahat ng mga tipikal na CS50 kulay na nakita mo sa klase - talaga, paumanhin - o sa website. Sana ka guys ay maaaring makita ano ako paggawa ko dito. OK. Huling isa. Madla: Paano mo magdagdag ka ang hilera sa una? RHED SHI: Kaya, ang tanong ay, kung paano ay ko bang idagdag sa simula ng hilera? Ako nagpunta sa seksyong ito talahanayan - o gayunpaman maaari ko piliin ang mga seksyon ng talahanayan - at pagkatapos, narito, na-update ko ang bilang ng mga hilera. At, hayaan mo akong umaasa na ito ay gumagana. OK. Ni makita kung ito ay gumagana Hayaan. Oh, perpekto, kasindak-sindak. OK. Habang pagbuo up ako ng aking demo, ang ilang mga mga bagay ay hindi nakahanay, kaya, salamat para sa ang palakpakan. Oo. Kaya, sabihin makita. Isasagawa namin ang siyam na gumawa lamang ang lahat ng bagay - o talaga, sabihin lamang i-lahat ng mga ito sa pagbubunyag mga tagapagpahiwatig. At pagkatapos ay, kung ano ang nais kong ipakita sa iyo, masyadong, ay paano ko maaaring tumagal ng bawat isa sa mga hilera table at mayroon ang mga ito nakikipag-ugnayan - oh. Hindi. Oh. Gayundin, nais kong ipakita sa iyo - dito, maaari ko bang ilagay ang pamagat ng aking nabigasyon controller, tama? Kaya talaga, mapapansin mo, sa lalong madaling ko naka-embed na ito view ng controller sa loob ng navigation controller, makikita natin ito navigation bar sa tuktok ng aming storyboard pagkatawan ng isang view ng controller. At oo, ito ay nagbibigay sa amin, tulad ng, ang isang visual, uri ng, gagabayan sa aming nakikita screen. Ito ay malinaw naman pagpunta sa maging ang navigation bar. At kung ano ang gusto kong gawin nang mabilis, ngayon, ay ilalagay sa isa pang - kaya ito view ng talahanayan ng controller ng ginawa ko sa pamamagitan ng pagkuha ng isa sa mga ito at pag-drag nito dito, at iyon ang kung ano ang pinapayagan sa akin upang mabilis, talaga, lumikha ng isang view ng talahanayan controller. Kung gagawin namin magkaroon ng oras bagaman, makakakuha ka makita iyon, ayon sa programa, ito ay isang Medyo nakakalito higit pa upang lumikha ng isang talahanayan view ng controller, dahil doon ilang mga pamamaraan na Kinakailangan para sa iyo na, uri ng, magsulat out sa order para sa pagtingin ng talahanayan controller na maipakita nang tama. Gayunpaman, gusto ko lang ipakita sa iyo, ngayon, isang halimbawa ng kung saan, kung kumuha ako nito, halimbawa - Naglaan na ako sa ibang view ng controller. At ngayon, sabihin nating nais ko upang makontrol Alt aking pinaka unang asul talahanayan ng hilera upang dito. At gusto kong tumawag ito Blue. At pagkatapos ay - sabihin makita. Ako sa view ng ngayon, at ang maaari kong baguhin background sa asul. At kaya, paunawa, narito, ang drop-down Binibigyan ka rin menu isang hierarchy ng lahat ng mga bagay na ito. Kaya isang mahalagang bagay upang tandaan, narito, ay na ang lahat ng mga bagay na ito, dito - ito view ng talahanayan controller, ang talahanayan view, view ng talahanayan seksyon, pagtingin ng talahanayan cell - lahat ng mga ito ay bagay, sa code. Kaya, alam mo na, ang isang label ay ngayon sa ilalim ng sa view ng nilalaman, at iba pa. Kaya sa at iba pa. Kaya, kung nagpapatakbo namin ang code na ito, kami dapat makita ng isang bagay - ni makita kung ito ipagbigay - oo. Kaya, doon pumunta kami. Ngunit, kung hindi namin gawin iyon, wala ng mga iba pang mga bagay na gumagana. Mag-right? Kaya isa lamang ito gumagana. At, alang-alang sa oras, hindi ako'y pumunta sa, alam mo, ang paglalagay ng down na ang iba pang mga bago. At ito ay ang dulo ng, uri ng, storyboard - kung ano ang gusto kong ipakita ang mo para sa storyboard. At, gagawin ko ay may nagtrabaho out halimbawa, talaga, dito mismo. Kaya, ito ay ang storyboard na ginawa ko dati. Kaya, bilang maaari mong makita, ito ay ang aking navigation controller. Pagkatapos Nagkaroon na ako sa aking unang view ng controller, pagkatapos ay nagkaroon ko ang aking view ng talahanayan controller, at pagkatapos ay nagkaroon ako lahat ng mga ito - kaya dati, ako ay paggawa isang bagay ibang-iba. Kaya, paumanhin mga bagay. Kukunin ko marahil linisin ito bago mamaya Ko ipadala ito off sa produksyon. Ngunit, kung nagpapatakbo namin ito, makikita natin ang na ang lahat ng mga pagpipilian ay magagamit sa amin. Maliban Hindi ko gawin ang mga background ng mga kulay. Kaya, gandang simpleng application. Ngayon, ni subukan upang matugunan ipaalam ito ayon sa programa. OK. Kaya, upang gawin iyon, kami ay lamang ng pagpunta upang magsimula ng isang bagong proyekto Xcode. Susubukan naming gawin itong isang walang laman na application ngayon, dahil hindi namin nais na mayroon ang storyboard. Kaya, kailangan lang ako paghihigpit sa aking sarili upang hindi gamitin ang anuman sa storyboard, at isang Walang laman ang application ay hindi ninyo ako ng storyboard. Ito ay upang maiwasan lamang aking sarili mula sa Pandaraya. Ni makita Hayaan. Maghintay. Nakatulong ba ako - Oo. OK. Mag-right. Kaya, narito, ay iniwan namin sa walang iba kundi code. Kaya, hayaan mo akong ilipat ang window na ito bahagyang sa ibabaw. Mag-right. Tulad ng iyong nakikita dito, ang tanging mga file kami ay ibinigay ay AppDelegate.h at tuldok m, at kami ay walang storyboard na ngayon. Kaya kung tumakbo namin ito, kami ay pumunta pa rin sa makapunta sa puting screen, salamat sa Diyos. OK - puting screen, ngunit wala pang tao. At, narito ang mahalagang bahagi. Ito ay kung saan ang aksyon na mangyayari. Sa mga nakaraang bersyon, mayroong Karaniwang walang code dito, ngunit ang storyboard mahalagang nagbibigay ng ang code para sa bahagi na ito. Hindi ko ay pumunta sa mga detalye sa kung paano. At kung ano ang gusto naming gawin ngayon ay, nais naming upang pumunta sa dito, at ito maliit na espasyo Nagsisimula ang paglikha muli ang aming mga app. Kaya - yes? Madla: Mag-zoom? RHED SHI: Mag-zoom. Oo, sigurado. OK. Kukunin ko ay nagta-type, kaya hindi ito dapat bagay na masyadong maraming. OK. Kaya, una sa lahat, tandaan gusto naming lumikha isang navigation controller, tama? At din, bilang maaari mong makita dito, Xcode ang isang talagang mahusay na trabaho ng self-pasta. Kaya, bilang mapapansin mo, ang mga pangalan ng ang lahat ng bagay ay isang pulutong mas mahaba kaysa karaniwan, ngunit Xcode pumupuno ito sa para sa iyo. Kaya ang maaari kong pindutin lang ang Enter. Kaya, gusto kong lumikha ng isang nabigasyon UI controller pointer, at ako ay maaari itong tawagan navigationController. Ngayon, anong gagawin ko ngayon? Pagkatapos nito katumbas lagdaan, kailangan kong, una, lumikha ng ito sa loob ng memorya. Kaya, pupuntahan ko gawin NavigationController alloc - kaya, ito ay katulad ng sa malloc, na guys ginagamit sa C - at pagkatapos, Pupunta ako sa init ito. Kaya, ito ay talagang mahalaga na ang anumang mga sa bagay na nilikha mo, gusto mong i- alloc at init ito. Iyon pupuntahan lumikha nito at instantialize ito sa loob ng memorya, at ngayon maaari mong gamitin ito. Ang lahat ng mga karapatan? Kung hindi mo gawin iyon, ang iyong mga bagay na ginagawa hindi umiiral, at makikita mo tumakbo sa isang bungkos ng mga problema. At pagkatapos, gusto kong lumikha isang view ng controller, tama? Kaya, gusto kong lumikha ng UIViewController star - kaya, lahat ng bagay ay isang pointer sa Layunin-C, at ako pagpunta sa gawin isang bagay na katulad, dito - alloc, init. OK. At pagkatapos ay kung ano pupuntahan ko lang gawin ay, ako ay pagpunta sa - kaya, tandaan kapag ginawa namin ang naka-embed sa navigation controller? Ito ay kung paano ito gawin sa code. Ikaw ay pagpunta sa gawin navigationController pushViewController - Madla: [hindi marinig]. Makakaapekto ba ito mangyayari para sa amin, o -? RHED SHI: Oh, oo. Hindi. Ang may gusto sa akin itong mas mahusay. Hindi, ito ay gumagana para sa iyo, masyadong. Kaya, narito ang lahat ng mga pamamaraan. Kaya pushViewController ay isang pamamaraan, at din, higit na partikular, ito ay isang pamamaraan pagkakataon ng UI nabigasyon controller. Dahil nagkaroon kong lumikha ng aking nabigasyon UI controller star, at pagkatapos ay ako maaaring tumawag ito pushViewController sa aking tiyak na pagkakataon ng isang nabigasyon UI controller. Madla: Huwag mayroon kaming gawin ang eksaktong salita, o ang ito ay umiiral na para dito? RHED SHI: Oo, dahil ito ay isang pamamaraan. Ito ay tulad ng isang function. Ito ay tulad ng printf. Ito ay tulad ng scanf. Ito ay tulad ng strcompare. Maliban nalalaman na nito kung ano ang iyong nais na nagta-type, at mapapansin na ito idedetalye palagi makabuo ng mga bagay na legal na pinapayagan para sa iyo. Kaya, kung walang nagpapakita up dito, pagkatapos ng isang bagay na mali. Kaya, pushViewController. Kaya, ngayon, gusto kong itulak ang aking bagong likhang UIViewController, at pagkatapos, animated - marahil hindi. Dahil ito ay magiging ang unang view ng controller. Ibig kong sabihin, kahit na ako gumawa animated, marahil ito ay hindi lalabas, dahil ito ay ang unang screen. At tandaan ang mga bracket. Kaya, tandaan kung paano namin ginagamit ang bracket? At sa loob ng mga bracket, ang sa bagay na tawag sa isang pamamaraan - kaya ang aming mga bagay ay ang nabigasyon controller, at ang pamamaraan ay isang push animated view ng controller. At makita kung paano ito tumatagal sa dalawang argumento, at sila ay pinaghiwalay sa pamamagitan ng mga, uri ng, mga salita, at ng tutuldok. Kaya, sinusubukan Layunin-C upang gawin itong maganda at madali para sa iyo na basahin nang malakas - ang iyong code - at mayroon itong semi, uri ng, magkaroon ng kahulugan. Gayunpaman, ang paggawa ng lamang ito ay hindi sapat. Hayaan akong mag-zoom out ngayon. Ang paggawa lamang ito ay hindi sapat upang makakuha ng kung ano ang nakuha namin sa dati. Kaya dito, mapapansin mo na mayroong talagang hindi pagpunta sa maging anumang uri ng bar, dito, tama? Walang navigation bar, na paraan na pa rin namin ang hindi nakuha ito. At maaari naming subukan na out, din, sa pamamagitan ng, marahil, ang pagbabago ng background ng ViewController, tama? ViewController.background-- ah. Kaya, makita kung paano ay walang ViewController ng isang kulay ng background, kahit na ako Nais na i-access ito? At iyon ay dahil ViewController ay isang lalagyan para sa view. Kaya, ito ay may ari-arian na view, na pagkatapos ay may isang kulay ng background. At, maaari ba akong magtakda ng ito, uri ng tediously, pamamagitan ng pagtawag ng kulay sa UIColor bagay. Kaya, notice dito, redColor ay isang pamamaraan. Ito ay isang paraan ng klase ng UIcolor. Dahil hindi ko kinailangang upang lumikha ng isang aktwal na pagkakataon ng isang UIColor sa pagkakasunud-sunod upang tawagan ang pamamaraan dito. Lamang ako, nang simple, na tinatawag na ito sa pangalan ng uri-tulad ng. Ko, tulad ng, na tinatawag na ito sa int, kung int nagkaroon, tulad ng, ang isang pamamaraan upang ito, halimbawa. At kaya, kung nagpapatakbo namin ang code na ito, kami ay mapapansin na ang background ay talagang hindi pula. Ito ay puti pa rin. At kung paano namin makuha sa paligid iyon ay, pansinin kung paano naroon ang self.window. Iyon ay, tulad ng, ang tunay na lalagyan para sa iyong application. Ito ay ang tunay na bagay na naglalaman ang lahat ng bagay sa screen, para sa isang iPhone o iPad application. At, maginhawa, self.window May property na ito na tinatawag na rootViewController. At iyon ay magiging ang pointer sa ang pinakaunang view ng controller sa loob ng iyong app. Kaya, kung ano ang gusto naming gawin dito, ngayon, ay i-set na katumbas ng aming navigation controller. Mag-right? Dahil, technically, nabigasyon controller ay ang aming pinakaunang pagtingin controller. Ito sinusubaybayan ng isang array ng iba pang mga pagtingin controllers, at hunhon namin ito view ng controller sa array na sa navigation controller. Kaya, hindi mo nais na gawin ito. Iyon ay hindi talaga makakatulong sa iyo. Gusto mong gawin ito, kung nais mong gawin isang navigation controller, na kung saan pinaka- ng sa iyo marahil ay dahil makikita mo gusto upang, uri ng, mayroon isang uri ng, tulad ng, menu upang bumalik sa o ilang homepage upang bumalik sa, sa halip na isang Walang laman ang screen. Oo? Madla: Ito ba ay hindi komportable para sa iyo upang mag-zoom in sa - RHED SHI: Oo. Kaya, oo. Ito ang code, at ngayon Subukan natin ito ipaalam. Kaya, doon pumunta kami. Magic. Kaya, ang OK. Salamat sa inyo. OK. Kaya ngayon, kung ano ang gusto naming gawin ay - kaya, uri ng kami ay limitado, dito, tama? Potensyal na namin ma-isulat ang lahat ng bagay sa loob ng isang ito function. Ngunit, hindi iyon paano pagbuo iOS karaniwang gumagana. Kaya, kung ano kami ay pagpunta sa gawin ay, kami ay pagpunta upang lumikha ng ilang mga bagong file. Ngunit, higit na partikular, ipinapadala namin ng pagpunta sa lumikha ng isa pang Layunin-C klase, o isa pang bagay - klase at mga bagay ay mapaghahalinhinan dito. At, narito kung paano magagawa ko, potensyal, lumikha ng isa pang klase ng U controllers. Kaya, ito ay isang sub-class, pati na mapapansin mo, dito, ito ay isang sub-class ng View ng UI controller, ngunit maaari ko tumawag ito anumang iba pang pangalan dito. Kaya kong itawag sa CS50, kaya kong tumawag sa ito view ng controller, kaya kong tumawag sa ito blah view ng controller - anumang bagay na gusto ko. Ito ay lamang ng pangalan para sa klase. Gayunpaman, ito ay magiging mahalaga dahil, mahalagang, kung ano ako ng paggawa dito ay kung, Lumilikha ako isa pang pangalan ng klase. Kaya, ito ay magiging, tulad ng, ang ilang mga uri ng uri o isang bagay. Kaya, dapat itong maging isang maliit na bit generic. Hindi ito pagpunta sa maging masyadong partikular. At din, nais kong ituro ang mga dalawang mga pagpipilian. Dahil ginagawa namin ang lahat ng bagay sa loob ng code, minsan ito ay mas madaling upang magdala ng isang file ng interface, tulad na Maaari ko bang literal i-drag at i-drop, bilang May ginawang mas maaga namin sa storyboard - mo alam, isang label, o isang pindutan, o kahit anong iba pa. At kaya, xibs ay mga file na magpapahintulot sa inyo na huwag na, at mayroon kang i-hook up ito sa view ng controller file. Kaya, pupuntahan ko sadya hindi suriin ito. Karaniwan Gusto ko suriin ito, at kung ako ginawa lamang ito para sa iPhone o iPad, ako Gusto suriin ito at mayroon lamang isang para sa, alam mo, ang iPhone o iPad ang. Ngunit dahil ako paggawa ng pangkalahatan, ako pupunta upang lumikha ng dalawang mga mamaya. Kaya, pupuntahan ko sadya alisan ng tsek ito. Ito ay talagang mahalaga din. Ang isang pulutong ng mga oras, Nagkaroon na ako ng mga bug kung saan ito ay hindi naka-check. At kaya, malinaw naman, ang file na ito ay hindi, uri ng, tulad ng, na kasama o na-import sa loob ng ito pagsubok folder. At kaya, ang aking code ay talagang walang ideya sa pagkakaroon ng file na ito, at na nagiging sanhi ng maraming sakit at oras ng pag-debug. Ngunit, tiyakin lamang na ay naka-check ito kaya na, alam mo na, ang target ng ito file ay para sa application na ito. OK. Kaya, ngayon lumikha kami ng dalawang mga bagong file. At ang mga file na magmukhang medyo walang laman. At, talaga, ni ring magpatuloy na ipaalam sa pamamagitan ng paglikha ng xib mga file. Kaya, dati, ako ay nasa Cocoa Touch drop-down. Ngayon, ako pagpunta sa pumunta sa User Ugnay Interface, at bilang maaari mong makita, ako ay maaaring lumikha ng storyboard. Kaya, kahit na sinimulan ko ang isang walang laman application, maaari ko pa rin bang gamitin ang isang storyboard. Bagaman, ito ay makakakuha ng mapaglalang sa tuntunin ng kung paano mo gustong upang kumonekta na sa iyong code. Kaya, hindi ko ay pumunta doon. Ngunit, kung ano ang gusto naming gawin ngayon ay lumikha ng isang view. At maaari mong piliin para sa isang iPhone o isang iPad. At karaniwan, upang tukuyin ang pagkakaiba - kung gumagawa ka ng isang unibersal na application - mong alinman sa ilagay ang isang salungguhit iPhone, o maaari mong gawin ang isang Twiddly. Ito ay hindi talagang mahalaga. Ito ay simple para sa iyo na makilala ang pagkakaiba na pagtingin ay para sa kung aling mga aparato. At kaya, ngayon tumingin. Mayroon akong isang screen na maaari kong magamit. At kaya, halimbawa, maaari ko bang ilagay ang isang label sa dito, alam mo na, at maaari ko ring ilagay isa pang button dito. Hindi ako mag-abala sa pagbabago ang mga halaga dito. Ngunit, kung ano ang mahalaga dito ay na may-ari ng file - kaya, ako sa loob ng iPhone view, xib iPhone file. At pababa sa lugar ng nabigasyon o drop-down na menu, gusto kong pumunta sa may-ari ng file. At ito ang talaga mahalagang hakbang dito. Gusto kong mag-view ng klase controller, kaya na ito xib file ay pagpunta sa ma-ugnay sa ang aking mga view ng controller. At anumang bagay na gagawin ko sa loob ng aking pagtingin controller ng programming ay pagpunta sa sasalamin sa dito. Kaya, gayunpaman, napansin na ang - talaga, gumawa ng view na ito hayaan background bughaw, halimbawa. O berde. At pagkatapos, kaya kung ikaw makakakita mapansin, pabalik sa ang code na ito, ito ay kung saan namin nakuha sa aming nabigasyon controller. Kahit na ginawa namin hakbang na ito, pagpunta pa rin upang maging pula, hindi berde. At mayroong isang dahilan kung bakit. Ito ay dahil, kapag inited namin ang aming pagtingin controller, dito - Paumanhin, ito ay isang maliit na mabaliw - kapag inited namin ang aming mga view ng controller dito, inited namin ito ng pangkalahatang uri UIViewController. OK? Kaya kami ay hindi kahit na gawin ito na may klase na ito. Kaya tandaan, ito ay tulad ng isang klase ngayon. Maaari itong naisip ng bilang isang uri, lamang bilang UIViewController ay isang uri. At upang magamit na, kung ano kailangan naming gawin ay i-import ito - pag-import ViewController - at, tulad ng maaari mong makita, ito autofills ito para sa akin. Kaya, ViewController - at ngayon, narito, ko maaaring baguhin ito UIViewController sa ViewController. At ngayon, narito, ko maaaring baguhin ito sa ViewController. Ni tumakbo ito muli Hayaan. Ito ay pula pa rin. At ang dahilan kung bakit ito pa rin pula ay dahil - woah, kung ano ang nangyari doon? Nais naming iugnay ito xib maghain ng controller view. Gayunpaman, upang aktwal na gawin na iyon, kailangan namin upang pumunta sa ito. At kapag ginagawa namin ang init, gusto naming gawin initWithNibName, at pagkatapos ay nais naming gawin ang sa string View_iPhone, halimbawa. Maaari mong huwag pansinin ang bundle dito. At ito ay pagpunta sa payagan amin na, talagang - uh oh, may problema. Mag-right. At oo, may problema dahil, sa ang aming pagtingin xib file, mayroon kaming isang label at mayroon kaming isang pindutan. Gayunpaman, kahit na kinonekta namin ang mga dalawang, walang ang nasa loob ng ViewController.h o ViewController.m na nagpapakita ng mga mga pindutan o ang mga label. Kaya, kailangan naming isulat ang mga nasa bilang mga katangian ng controller view. Kaya, ito ay kung paano mo idedeklara isang ari-arian. Inaabot sa, karaniwan, ang dalawang mga pagpipilian. Para sa mga layunin ng sa amin at ito pantas-aral, Gusto ko sabihin na, sa pangkalahatan, karamihan ng mga pag-aari ay nonatomic at mapanatili. Maaari mong basahin ang up sa pamamagitan ng paghahanap sa Google, mo alam, ang pagkakaiba sa pagitan ng nonatomic at panatilihin sa, mo alam, Google o isang bagay. At Kukunin ko sa iyo na, tulad ng, Stack Overflow, kung saan ang mga tao ay magkakaroon ng sagot para sa mga pagkakaiba sa sa pagitan ng mga iyon. Ngunit para sa ngayon, na kung ano ang namin nais upang alalahanin ang. At gusto naming gumawa ng isang label UI, bituin, at maaari namin ito tawagan ang kahit anong gusto namin. Maaari naming tumawag ito, alam mo na, label. At, lilikha kami ng isa pang isa para sa pindutan. At tandaan na isama ang asterisk, dahil ang pagharap namin na may mga payo halos lahat ng lugar sa loob ng Layunin-C. Gayunpaman, iyon ay hindi pa rin malutas ang problema, bilang maaari mong makita dito. At ang dahilan ay dahil, sa tuwing kami nais ikonekta ang isang label xib file o isang pindutan sa program, o ang header at pagpapatupad ng file, nais naming idagdag ang piraso ng code - outlet. Pansinin na ito ang isang mahalagang salita. At, sa lalong madaling matapos ako mag-type na out, dapat itong magkaroon ng mga dalawang lupon, dito. Kadalasan, hindi sila nakikipag-puno in Hindi ako sigurado kung bakit ang mga ito ay. Ngunit karaniwan, kakailanganin mong i-mano-mano ikonekta ang mga ito sa pamamagitan ng pagpunta sa ito bahagi ng ang mga utility area. At kaya, ngayon, nakuha ko na ang aking label pinili, at gusto kong i-drag ang bagong na tumutukoy sa outlet sa may-ari ang aking file, at pagkatapos ay mag-click sa Tatak. Kaya ngayon, sa wakas, ang label na ito ay konektado sa label na ito. At label na ito ay kung ano kami ay pagpunta sa gumamit ng programming upang baguhin nito teksto, font nito, background nito kulay, at iba pa. Kaya, bakit hindi magawa namin ang parehong para sa pindutan? At bilang mapapansin mo, para sa pindutan, ito pa ng kaunti kumplikado. Dahil, Ibig kong sabihin, hindi ka dapat pindutin sa pindutan, kaya nakakuha ng maraming ng mga pagpipilian para sa kung paano mga gumagamit Maaari pindutin ang isang button. At pagkatapos, magpapadala kami makita mamaya sa na maaari naming ikonekta ito sa aming code upang gawin itong gumana. Kaya, para sa ngayon bagaman, nais naming ikonekta ito sa aktwal na pindutan sa loob ng aming code. Kaya pumunta kami sa bagong tumutukoy sa outlet, at pagkatapos ay gawin ang pindutan. Ngayon, ni tumakbo ito muli ipaalam. Uh oh. OK. Hindi ko alam kung ano ang nangyayari sa dito ngayon. Whoa. Isa lang sandali, dito. Talaga, bakit hindi tinitingnan namin tumingin sa isa pang halimbawa sa ang interes ng panahon. OK. Kaya, narito ang higit pang maluwag sa loob inihanda Halimbawa para sa ViewController. Tulad ng iyong nakikita dito, Isinama ko ang mga katangian para sa ang label at ang pindutan. At pagkatapos, ito piraso ng code dito - ito IBaction - ay isang koneksyon sa ang pindutang ito dito. Kaya bilang maaari mong makita dito, Touch Up Inside ay konektado sa tagapili napindot na tinatawag na Button. Kaya, maaari talaga namin pumunta sa pamamagitan ng galaw muli, narito, sa pamamagitan ng pagsasagawa Touch Up Sa loob at pagkaladkad dito sa May-ari ng file, at pagkatapos ay mag-click sa Button napindot. Ngayon, magpatakbo ng aming code ipaalam. Kaya ngayon, ang pindutang ito ay gumagana na ngayon at Dadalhin sa amin sa susunod na pahina. At, sa mga tuntunin ng aming view ng controller, ito ay ang piraso ng code na kinuha pinapahalagahan ng Pindutan napindot. At ito ay mahalaga na tandaan dito, na Lumikha ako ng isa pang uri ng view ng tinatawag na controller ng lamesa view ng controller. Kaya, ito ay katulad upang i-back sa storyboard, kapag nag-drag ko ang isa sa mga controllers view ng talahanayan sa storyboard. Lumilikha ako ng isa pang Pointer sa controller view ng talahanayan, alloc at init-Pina ito, at pagkatapos ay ang paggawa sarili tuldok nabigasyon controller, itulak ViewController, ang bagong viewController. At ako nai-set ang animation sa oo, dahil ngayon sa loob ng aking app, at ako nais upang aktwal na makita ang animation ng pagpunta mula sa home page sa talahanayan view ng controller. Madla: Huwag mo pa rin mag-alala tungkol sa koleksyon ng basura? RHED SHI: Ano iyon? Hindi. Kaya, ang tanong ay, ang mayroon kang upang gumana sa koleksyon ng basura? Kaya, Xcode 4 ay nagkaroon tulad ng ARC, na awtomatikong reference nadaragdagan pa. At kaya, karaniwan kapag nagsimula ka ng bagong proyekto, gusto ninyong siguraduhin na ang, dahil talagang gusto ni walang sinuman upang harapin ang pagbabakante memorya at bagay-bagay. Ngunit tingin ko sa Xcode 5, wala kahit ang pagpipiliang iyon sa bagong proyekto. Kaya, awtomatiko itong ginagawa na para sa iyo. Oo? Madla: Maari i-export mo ang isang PDF sa iyong storyboard? RHED SHI: Oo, talagang. Kaya, ang lahat ng mga ito ay isasama sa source code, kaya ka guys ay maaaring tingnan ang ang aktwal na proyekto Xcode para dito. Oo? Madla: Ngunit, Ibig kong sabihin, tulad ng, maaari ba akong i-print ang isang PDF gamit ang aking storyboard? Kung gusto ko lang i-export ang mga larawan upang ipakita ang isang tao. RHED SHI: Oh oo. Sa tingin ko, siguro, maaari mo lamang kumuha ng screen shot. Oo, at magpadala sa kanila ng isang screen shot o isang bagay. Oo. Kaya, sabihin makita. Sa interes ng oras, sa palagay ko na lahat l ay maaaring masakop ang araw na ito. Ngunit, alam ko na, talaga, lamang bahagya ng pagpindot sa ibabaw ng iOS pag-unlad. Kaya, mangyaring huwag mag-atubiling makipag-ugnay sa akin kung mayroon kang anumang mga katanungan tungkol sa iOS pag-unlad. At, sana, magagawa ko magagawang upang linisin up ang ilan sa mga code para sa mga pinagmulan mga file code, nang sa gayon ay magkakaroon ka ng ilang talagang maganda mga halimbawa upang gumana sa. Iba pang mga kaysa sa na, kung ikaw guys ay pumunta sa sa CS50 Hackathon, maaari ko o maaari hindi maging doon, at maaari ba akong tumulong na may ilang mga pag-unlad iOS, masyadong. Kaya, salamat ng maraming, guys.