[Powered by Google Translate] [Seminar] [IOS: Ritun Apps Eins Boss] [Tommy MacWilliam] [Harvard University] [Þetta er CS50.] [CS50.TV] Allt í lagi, allir, velkomin á IOS: Ritun Apps eins og Boss. Þetta námskeið er að fara að einblína á að skrifa forrit fyrir iPhone og síðan skriflega apps fyrir iPad, og svo erum við í rauninni að fara að ganga í gegnum a par mismunandi dæmi um hvernig á að gera app, einfaldur leikur eins og Tic Tac Toe, eða ef þú ert meiri áhuga á að gera app eins og einhvers konar fréttir lesandi eða eitthvað sem hefur áhrif á Netinu mun ég tala um það eins og heilbrigður. Hér er stutt dagskrá. IOS apps eru skrifuð á tungumáli sem heitir Objective-C, og svo er þetta svolítið svipað C en ekki í raun á öllum, þannig að við munum vera að tala svolítið um tungumálið sjálft og þá hvernig á að byggja iPhone apps með þessu forriti sem heitir Xcode, sem ef þú hefur ekki sótt það enn ekki hika við að sækja núna. Það er nokkur gígabæta. Það ætti að vera ókeypis á App Store, svo þú þarft að hafa Mac helst að keyra nýjustu útgáfuna af OS X. Ef þú ert ekki, engin vandamál. Við höfum Macs í vísindasafn í boði fyrir þig með Xcode uppsett, og svo ekki hika við að nota þær fyrir þróun. Ef þú vilt gera app, en ekki Mac, ekki hafa áhyggjur. Það er nóg af auðlindum háskólasvæðinu fyrir það. Og svo þá erum við að fara að ná 2 stærri dæmi um mismunandi forrit sem þú getur gert. Objective-C er tæknilega það er kallað frábær sett af C. Það þýðir að allir C kóða gildir einnig Objective-C kóða. Það þýðir að við svona vegur borði á sumir fleiri lögun til C. Sumar þessara aðgerða eru ekki að þurfa að alltaf að skrifa malloc aftur, þakka Guði, ekki að þurfa að hafa áhyggjur af þeim heimskur ábendingum og frjáls þá og allt það dót þú hataðir um C, og það er góður af farið í Objective-C. Nú, Objective-C er einnig miklu stærri staðall bókasafn, þannig að það er mikið meiri virkni sem þú færð ókeypis inni Objective-C. Manstu þegar við vorum að skrifa PHP við tekið eftir því að við fórum frá þetta minnsta mál í stórum bókasafn allra þessara brjálaður hlutur sem þú getur gert. Það sama gerist í IOS. Það er hluti fyrir hluti eins og Buddhist dagbók, og í raun nokkuð þú getur hugsanlega hugsa um líklega er þegar í framkvæmd Objective-C á. Markmið hluti Objective-C vísar eitthvað heitir Object-oriented Forritun. Þetta er eins konar nýtt hugtak, en við höfum í raun og veru að mestu lært mikið af þessum hugmyndum nú þegar. Hugmyndin á bak við hlutbundin forritunarmál er að þú ert að fara að skipuleggja a einhver fjöldi af kóða í kring þessum hlutum heitir námskeið, og þessir flokkar eru mjög lofuðu structs. Inni á strúktúr sem við í rauninni sagt hér er hlutur, En þetta getur haft meðlimir. Til dæmis, a hnút í tengda listanum gætu haft aðra hluti eins og gildi, sem bendi á næsta hnút á listanum, og saman sem bendillinn og gildi orti þetta eitt dæmi um strúktúr. Classes eru mjög svipuð nema flokkar geta einnig hafa aðgerðir innan þeirra. Þegar við lýst struct, gætum við bara sagt int n eða hnút * næsta. Nú með Objective-C við getum í raun og veru að setja aðgerðir inni í þessum hlutum. Annað sem flokkar geta gert er að þeir geta erft gögn úr öðrum flokkum. Til dæmis, munum við vera að horfa á fullt af innbyggður-í Objective-C flokkum. Einn af þeim gæti verið í bekknum sem sýnir skoðun fyrir skjánum, og svo með því að segja að ég vil að innleiða eigin sýn mína við segjum í grundvallaratriðum einhvern hjá Apple, líklega mjög gott fólk, skrifaði þennan flokk fyrir mig, og það sér hlutina eins og sýna hnappa eða flutningur á skjánum, og við vildi vera virkilega pained að framkvæma öll þessi virkni sjálf, og svo með því einfaldlega erfi gögn sem við getum sagt allt sem þú gerðir í þeim flokki Ég vil líka inni í bekknum mínum, og þá er ég að fara að gera eitthvað annað efni, þ.e. koma app. Það er það sem orðið arfleifð þýðir. Við munum sjá fleiri áþreifanleg dæmi. Og að lokum, lykillinn og Object-oriented Forritun er að það leiðir til gögn hjúpun. Í sumum vandamál okkar setur við gætum hafa þessar stór, alþjóðlegt breytur og Víðværur alls staðar, og það er hvernig við myndum halda utan um ástand. Með flokka við getum byrjað encapsulating upplýsingar inni á hlut. Ef við eigum bara einn skjár á app okkar, höfum við í raun ekki þurft að hafa nein gögn frá annar skjár í inni app okkar að og það með því að encapsulating hlutina innan flokka þetta leiðir í raun til miklu betri kóða hönnun, og þetta er mögulegt með sumir af the fleiri valkosti á Objective-C. Forewarning er setningafræði fyrir Objective-C er banani. Það er eins og ekkert sem við höfum séð áður, svo það er a lítill hluti af a læra að sættast við Hvað Heck þýðir þetta? En einu sinni þú fá fortíð að fyrstu læra að það er mjög, mjög slétt að byrja að skrifa forrit. Til að lýsa því yfir að bekknum, að segja hér er bekkurinn minn, það er til staðar, og kannski eru hér nokkur atriði sem ég ætla að skilgreina seinna, Ég ætla að segja @ tengi. Ég ætla að segja @ tengi. Ég ætla að gefa bekknum nafn. Og svo seinna annars staðar ætla ég að segja @ enda, og allt þar á milli á @ tengi og @ enda er að fara að bekknum. Það er að fara að vera það sem er inni. H skrám okkar. Rétt eins og í C okkar. H skrár sagði í grundvallaratriðum hér eru nokkur atriði sem munu vera til. Ég er ekki endilega að segja þér hvað þeir gera enn, en þýðandinn þarf að vita að þeir eru fyrir hendi. Seinna inni. M okkar skrá-því m fyrir Objective-C er þar sem við erum í raun að fara að skilgreina hvað þessi flokkar gera. Líkt. C skrá okkar, að því tilskildu að við útfærslu á störfum. Inni á skránni okkar. M við erum að fara að segja hér er það sem allar aðgerðir inni af mínum flokki hvað þeir gera allt. Og að lokum, inni í strúktúr gætum við sagt innan þeirra hrokkið axlabönd int N eða hnút * næst, og í Objective-C við erum að fara að nota leitarorð @ eign, og þetta er það sem er að fara að skilgreina eiginleika, eða non-aðgerðir sem eru hluti af bekkinn. Hringt er í Objective-C er einnig banana. Þegar við lýst aðgerðir í C ​​og ég sagði eitthvað eins og int foo og opna paren og þá gaf það rakalista. Þetta er það sem lýsa aðferðum eða aðgerðum lítur út í Objective-C. Ef ég vil lýsa því yfir að aðgerð eða aðferð þar sem ég er að segja aðferð er í raun bara aðgerð sem er meðlimur í bekknum, svo konar víxlanlegur, en í raun ekki, svo inni aðferð vil ég að búa til nýja aðferð. Það er að fara að fara aftur ekkert, svo það er að fara að vera ógilt tegund. Þetta er aftur gerð virka minni. Nú höfum við parens hér því-ég veit ekki. Næst er að fara til vera the nafn virkni mína, og þá loks erum við með semíkommu bara eins og við átti í C. Hvað er nýtt hér er þessi strákur hér. Þetta bandstrik er í raun nauðsynlegt, og hvað þetta segir er að þessi aðferð hér verður kallað á dæmi af bekknum. Eftir að við lýst structs okkar og ég sagði líklega eitthvað eins og struct hnút n, og að í raun og veru búið eða instantiated einn af þeim structs svo að ég gæti í raun að byrja að vinna við það sem er inni í henni, svo þýðir þetta þjóta að við verðum að ræst bekknum bara eins og við instantiated að strúktúr áður en við getum kallað þessa aðferð á það. Ef ég vil til að byrja að bæta við rök að aðferðir mínar það verður jafnvel fleiri banana. Hér er aðferð nafn mitt. Og ég ætla að hafa ristill, og eftir þessa hreinsun það segir hér kemur nokkrar rök. Þessi aðferð tekur eitt rifrildi. The tegund af röksemdafærslu hans er int, og nafn þess rök eða breyta að ég ætla að byrja að nota inni í aðferð er kölluð i. Aftur, þetta er aðferð. Það tekur eitt rifrildi. Ef þú vilt að byrja að bæta við fleiri rök og það fær fleiri banana á að við höfum þetta ristill sem segir hér kemur minn listi af rökum. Þetta fyrsta rifrildi er heiltala. Nú, þetta seinni röksemd er áhugavert. Breytan sem ég ætla að vera með inni á virka minni er kallað f, svo inni í virka gat ég sagt f + = 1 eða eitthvað. Þessi hlutur hér er í grundvallaratriðum a lykill fyrir þessi rök eða breytu. Rétt eins og við höfðum helstu pör gildi og eitthvað eins JSON eða tengin fylki Objective-C tók þá ákvörðun að segja, allt í lagi, bara svo að það er mjög skýr Þegar þú hringja í aðferð hvað allir þessir þættir eru Ég er reyndar að fara að nefna þá alla. Þegar hringt er aðferð, munt þú í raun að segja andFloat, og þá munt þú gefa það inn Athyglisvert, er þetta ekki nefnt, en allar aðrar breytur eru þannig að ef við hefðum 3 rök sem ég gæti sagt andFloat og annað fljóta og svo framvegis. Þegar ég kalla þessar aðferðir það er banana auðvitað, þannig að ef ég á hlut, og ég skilgreind aðferð sem kallast foo, og ég vil kalla það, frekar en að segja foo opna / loka parens Ég ætla að opna krappi. Hér er nafn á aðferð mína. Ég ætla að loka krappi, og þetta er hlutur sem ég er að kalla það á. Mundu til allar þessar aðferðir í flokkum því flokkar geta haft aðferðir skilgreindar inni í þeim. Hér ég hef geðþótta búið til hlut af einhverjum flokki, og þetta er setningafræði til að gera það. Það eru 2 skref til að búa til hlut. Fyrsta skrefið er að segja að ég vil að úthluta pláss. Þetta jafngildir malloc. Við þurfum ekki að segja malloc lengur. Við lækkað m, gerði það alloc, og stað. C með. M. Eftir að við alloc eitthvað sem við þurfum þá að frumstilla hana. Í grundvallaratriðum þegar þú býrð til hluti sem þú might vilja til hafa sumir rökfræði sem keyrir þegar þær eru búnar, svo þú geta fara framhjá í sumum sjálfgefin gildi eða eitthvað svoleiðis, og svo þetta init aðferð er það sem raunverulega býr að mótmæla. Við úthluta fyrsta pláss, eins og við gerðum í C, og þá erum við að frumstilla hana, sem mega eða mega ekki gera a heild einhver fjöldi. Þá erum við aftur þennan grip í hlut o. Það er stjarna hérna vegna þess að þetta er tæknilega a músina, en ekki hafa áhyggjur, ábendingum eru ekki það stór samningur í Objective-C aftur. Nú höfum við instantiated þennan flokk sem heitir NSObject, og þetta er bara af handahófi klasa sem Apple hefur. Við höfum instantiated þetta, og nú hef ég dæmi af þessum flokki í hlut o, svo þýðir að ef ég skilgreint þessar aðferðir sem ég gæti hringt í þá svona. Á sama hátt, ef ég vildi hringja í aðferð við eitt rifrildi, þannig að þetta er á barnum aðferð, sem tekur einn rök, og hér er Baz: qux aðferð, þannig að þetta tekur 2 rök. Þetta kallar eina aðgerð á þessari mótmæla o. Skynsamleg? The setningafræði ætti skynsamleg, en þú svona að venjast því. Jæja, við skulum tala um nokkra hluti sem eru byggð inn í Objective-C sem voru ekki endilega byggt inn C. Í C höfðum konar til að takast á við strengi sem þessum heimskur fylki staf og það fékk mjög pirrandi. Objective-C hefur þau öll byggð í fyrir okkur, og það er byggt á nota þennan flokk sem heitir NSString. Þegar ég vil að búa til NSString við höfum fleiri Bogagöng setningafræði. Frekar en að segja "cs50" Við segjum @ "cs50" og þetta er bara setningafræði til að lýsa yfir strengi í Objective-C. Þetta er mjög auðvelt að gleyma, svo ekki. Nú, þegar ég hef þetta, þetta er band, en taka það er í raun bara mótmæla. Ég sagði NSString, sem þýðir að ég instantiated bekknum heitir NSString sem einhver annar skrifaði fyrir mig, og þeir voru mjög gott um það, og svo nú Ég get byrjað að kalla aðferðir á það. Ef ég kalla aðferðina lengd á þessu mótmæla s það er að fara að koma aftur til mín á lengd strengsins. Þetta er bara eins og strlen í C. Þetta myndi aftur 4. Á sama hátt, annar aðferð sem ég gæti langað til að hugsa um er þetta characterAtIndex. Þetta er aðferð sem segir um þetta band s Ég vil að þú að fá 0 staf, og svo myndi þetta aftur til mín eðli c, og það er allt fullt fleiri af þessum aðferðum sem þú getur Google mjög auðveldlega. Skjöl Apple er mikill, og við munum taka a líta á það í hluti. Þeir eru strengir. Við höfum einnig breytilegum fylki stærð innbyggður Mundu í C þegar við lýst fylki við þurftum að segja að þú ert með 5 þætti, enda sögu. Þegar við komum að JavaScript og PHP við gætum byrjað gera hlutina eins og að bæta þætti og færa atriði. Við getum gert það sama í Objective-C. Frekar en að búa til fylki í venjulegri C hátt við höfum enn annað sem kallast NSMutableArray. Það er líka NSArray, og þetta er að fara að í grundvallaratriðum þjappa sumir array. Þetta segir það fyrsta sem ég vil gera er að ég vil að úthluta pláss fyrir nýja fylking, og eftir að ég úthluta það Ég þarf þá að frumstilla hana. Aftur, bara að hringja þessar 2 aðferðir. Nú þýðir þetta að inni þennan hlut á Ég hef tómt array situr þar. Ef ég vil bæta einhverju við þennan fjölda, get ég hringt í addObject aðferð. Mig langar að bæta hlut við fylkisins A, og mig langar að bæta við streng CS50. Ef ég vildi öfugt fjarlægja sem ég get sagt að ég vil fjarlægja hlut á fyrsta sæti á fylki eða hlut a. Skynsamleg? Jæja, svona að venjast þessu ferningur krappi hlutur þú. Við the vegur, inni mikið af bókasöfnum Apple sérðu þetta NS. The NS stendur í raun fyrir næsta skref, sem var einn af Steve Jobs fyrstu fyrirtækjum, og það er þar sem hann byrjaði í raun að skrifa mikið af kóða eins konar grundvöll fyrir Mac OS X og öll önnur efni, og svo er þetta NS konar þessa fallegu arfleifð hrópa út að einn af fyrri félögum baka þegar Apple var fyrst að byrja út. Það er alls staðar. Við skulum taka a líta á heildræn Objective-C td. Hér er ég inni í Xcode. Til að fá hér, hlaðið ég fyrstu Xcode frá the App Store, opnaði það upp, og þá fór ég upp hér til að skrá, hérna til nýja, og þá verkefni. Eftir að ég gera það ég hef alla þessa valkosti sem ég vil búa, og svo við munum taka a líta á þessa valkosti síðar, en bara fyrir þessu dæmi, vegna þess að við erum í raun ekki að fara að hafa app enn, Ég kom hingað og ég sagði Command Line Tool, og það er app sem ég gat keyrt á stjórn lína bara eins og við höfum verið í gangi frá C. Það er hvernig ég bjó þetta verkefni, og svo núna er ég hér, þannig að við skulum fyrst líta á þessa skrá, og það ætti að líta nokkuð kunnuglegt. Ég er með int nafn. Það er vinur argc minn, annar vinur argv minn. Og svo getum við séð að þetta er innganga benda fyrir fyrsta Objective-C umsókn mína. Hér getur hunsa þetta fyrir nú. Þetta er í grundvallaratriðum sumir stjórnun minni efni sem þú munt ekki raunverulega alltaf að hafa áhyggjur. Við skulum líta á þessa fyrstu blokk hér. Þessi fyrsta lína, ef ég segi Student * Alice = [[Student alloc] init] hvað er það að gera? Þetta fyrsta nemanda hér, þetta er líklega í flokki. Þetta er ekki flokkur sem Apple skrifaði, en það er tegund sem ég skrifaði. Það fyrsta sem ég vil gera er að ég vil að úthluta pláss fyrir nýja nemendur, og þá vil ég að frumstilla hana, svo gefur þetta mér til baka þetta nýja nemandi mótmæla, og ég er að geyma það í breytu sem heitir Alice. Hvaðan sem bekknum koma frá? Jæja, hérna vinstra megin þetta eru allar mismunandi skrár inni í verkefnið mitt. Við sjáum hér hef ég Student.h og Student.m. The. H skrá, muna, er þar sem ég lýsi allt það sem mun vera í bekknum. Við skulum taka a líta á það. Allt í lagi, hér höfum við þetta @ tengi, og það segir að hér kemur yfirlýsingar af öllu sem er til staðar innan bekknum mínum. Og ég er með ristill. Og ég hef þetta NSObject hlutur. Þetta ristill táknar að arfleifð hluti við vorum að ræða svolítið fyrr. Þetta segir allt sem NSObject getur gert þar NSObject er þessi flokkur skrifað af einhverjum öðrum, allt þetta NSObject get ég vilja til vera fær til gera það. Með því að segja: NSObject sem þýðir að ég í rauninni arf allar virkni öðrum flokki. Það gaf mjög mér alveg fullt af mismunandi aðferðir og eiginleika sem ég get notað. Down hér er ég að búa til 2 eignir. Það þýðir að nemandi minn, ef þetta væri struct, þessi myndi vera 2 hlutir inni struct mínum, svo hefur hver nemandi nafn það er strengur, og nemandi hefur einnig einkunn, sem er int. Að lokum, niður hér ætla ég að búa til aðferð fyrir nemendur mína. Ég kallaði aðferð mína, initWithName, og það tekur einn rök, og þessi röksemd er band, og ég kallaði það nafn. Nú skulum líta á hvernig við framkvæmd reyndar þessum flokki. Hér er ég inni. M skrá minn, m í framkvæmd, held ég. Ég hef framkvæmd mitt, enda mitt, og hér er þar sem ég er í raun að skilgreina hvað initWithName gerir. Ég hef initWithName, nafn breytu mínu, og þá er þetta er þar sem ég er í raun að búa til nemanda, og svo er þetta svolítið dulinn, en þetta er eins konar boilerplate sem þú vilt hafa með í Smiðir þínum. Þetta frumstilling virka hér initWithName, er tegund af framkvæmdaaðila. Þú ert í rauninni að byggja upp nýtt nemandi hlut og kannski senda nokkur gögn inni á henni. Það fyrsta sem ég vil gera er að ég vil kalla init á þetta frábær hlutur. Mundu að þegar ég sagði til baka hér í. Klst skrá að allt að NSObject hefur nemandi einnig. Það þýðir að þegar ég bý til nemanda sem ég þarf líka að gera er ganga úr skugga um að NSObject að ég erfi öll þessi gögn frá er einnig frumstilla almennilega. Það sem ég þarf að segja er þetta frábær er í raun að fara að vísa til foreldris sem ég erfi frá, þannig að ég vil vera viss um að ég frumstilla allt sem ég er eftir áður en ég byrja að reyna að nota það. Þá ef að frumstilla rétt er þetta bara eins og að segja ef malloc skilaði ekki null þá get ég byrjað að setja nokkrar eignir. Í JavaScript og PHP við höfðum þetta leitarorð sem heitir þetta, og talað við núverandi dæmi af bekknum. Í Objective-C við köllum þetta sjálf. Þegar ég segi self.name, sem þýðir að mótmæla Ég skapa bara þegar ég sagði nemandi alloc init, sem er að fara að gefa mér aftur hlut. Það þýðir að ég vil setja nafn að mótmæla til hvað ég fór bara inn Rétt eins og í C, aðgang við meðlimi með þessum punkti, svo segir self.name nafn á nemanda mótmæla er nú að fara að vera það sem þú stóðst bara inn Og svo að lokum, get ég farið með hana svo ég fá í raun eitthvað til baka. Spurningar? Jæja, svo þetta sjálf = frábær init, ef þú ert ekki alveg að skilja arfleifð efni ekki hafa áhyggjur. Bara að vita að ef þú vilt alltaf til að gera eigin init aðferð þinn bara gera það, og þú munt vera gott að fara. Já. >> [Nemandi] Hvað ef sjálf meina? Þetta þýðir að þegar við malloc eitthvað Við skoðuðum alltaf ef það var jafn null, og ef það var null, þá erum við lauk. Þetta er það sama, vegna þess að ef þetta skilar null, þá erum við líklega að fara að seg kenna Ef við byrjum að reyna að vinna það. Það er nemandinn bekknum. Það þýðir að við getum frumstillt nemendur okkar á tvo vegu. Ef ég segi nemandi alloc init Ég er ekki að nota þá aðferð sem ég skrifaði bara, og í staðinn get ég einfaldlega sagt alice.name, og nú ætla ég að setja þessi eign nafn. Á sama hátt, ef ég vil nota þessi initWithName aðferð Ég get einfaldlega sagt alloc, og þá frekar en að segja init Ég ætla að hringja í þá aðferð sem ég stofnaði bara, og ég ætla að fara í Bob. Á þessum tímapunkti, þetta mótmæla Bob hefur nafn jafn Bob. Jæja, hérna er ég að nota þessi NSMutableArray sem við skoðuðum áðan. Ég úthlutun space.Then ég Frumstilli nýjan array. Ég ætla að bæta við 2 hlutum til þess. Fylkið hefur nú nemenda mótmæla. Takið eftir því að hvergi var ég að segja að þetta er fylki nemenda. Ég sagði það fylki, tímabil. Þá get ég sett hvað sem inni af því sem ég vil. Hér hef ég 2 hluti. Að lokum, ég hef annan hlut hér, þetta TF. Hérna í TF.h grundvallaratriðum the sami hlutur. Ég erfi frá NSObject, og við the vegur, þegar þú býrð bekkjum þetta er allt gert fyrir þig, þessu tagi boilerplate tengi. Það hefur eiginleika nemenda. ÉG hafa a par aðferðir hér sem í raun ekki gera a heild einhver fjöldi, og svo þýðir það eftir að ég búið til þessa TF hlut Ég get kalla þessa aðferð bekk á það svona. Einhverjar spurningar um Objective-C setningafræði áður en við byrjum að flytja inn meira áhugavert forrit þróun efni? Jæja, þannig að við skulum í raun gera iPhone app. Kjarni flokkar sem þú munt vera með inni á iPhone app kallast skoða stýringar, og skoða stjórnandi táknar grundvallaratriðum einum skjá inni á app, þannig að ef ég er á tónlist app, td Ein skoðun stjórnandi gæti táknað þá skoðun sem ég skoða öll lögin á iPhone minn. Annar Skoða stjórnandi gæti verið þegar ég smelli í lag og byrja að spila það eða eins og ég er að bora niður í listamönnum. Hver af þessum mismunandi skjái mætti ​​fulltrúa sem aðra sýn stjórnandi, og skoða stjórnandi er í raun bara a bekknum sem segir hvernig þessi skjár virkar. Things inni í skoða stjórnandi, við erum að fara að hafa eiginleika, svo hluti eins og a hnappur er að fara að vera eign stjórnandi okkar mati. Við erum líka að fara að hafa aðferðir, og þær eru í grundvallaratriðum atburður dýraþjálfari. Þessi aðferð segir þegar þú ýtir á þennan hnapp Mig langar að gera eitthvað, og að lokum, aftur, við erum að fara að nota þetta sjálf leitarorð til að fá aðgang að núverandi dæmi. Til að byggja upp tengi í IOS er reyndar mjög, mjög auðvelt. Þeir hafa þetta ágætur draga og sleppa tengi heitir Interface Builder, og 2 algerlega hugtök sem vír upp þinn Objective-C Interface Builder eru IBOutlet og IBAction. An IBOutlet segir einfaldlega að ef þú lýsa eign sem er hnappur, og þú vilt að krókur það upp að eitthvað í raun UI þínu, þú ert að fara að segja að það er rafmagn. Á sama hátt, ef þú vilt að tákna atburð dýraþjálfari þá þú ert að fara að segja að það er aðgerð. Til að í raun vír upp þetta myndrænt framsetning og númerið þitt það er mjög, mjög einfalt. Ef þú vilt festa IBOutlet, allt sem þú þarft að gera er að stjórna smella, og við munum sjá dæmi um þetta mjög fljótt. Þú stjórnar smella þar segir View Controller. Þú ert að fara að draga inn í the tengi, eða öfugt, Ef þú vilt að krókur upp atburði dýraþjálfari þú ert að fara að draga úr því tengi í hina áttina. Við skulum taka a líta á a mjög einfalt IOS dæmi. Við skulum búa til nýtt verkefni. Ég ætla að koma upp hér til umsóknar, og ég ætla að smella einum skjá Umsókn. Ég ætla að smella næst. Ég skal gefa verkefnið mitt nafn. Ég kalla það Hello. Athyglisvert Apple ráð þú ert að búa til vöru svo að þú getur selt það og þeir geta gera peningar. Down hér ætla ég að segja að þetta er iPhone app. Þú getur búið til iPad app, eða ef þú vilt að búa til einn af þessum forritum sem styður bæði tæki sem þú getur gert það líka. Þetta er það sem þú vilt krossa til að líta út. Þú vilt nota storyboards, sem við munum sjá síðar, og þú vilt örugglega að nota sjálfvirka tilvísun talningu, sem er ágætur eiginleiki sem kemur í veg þig frá að þurfa að segja malloc og ókeypis. Nema þú vilt hringja malloc og frjáls, myndi ég yfirgefa þetta köflóttur. Ég smellt á Next og að lokum, þetta er að fara að spyrja mig hvar ég vil vista það. Ég högg búið, og hér við fara. Ég bjó til nýtt verkefni. Hérna til vinstri eru allar skrár sem eru inni í verkefnið mitt, og taka eftir að ég fékk allt fullt, og ég vissi ekki einu sinni að gera neitt. IOS er mikill. Til dæmis hér í ViewController.h, þetta er að fara til að tákna fyrsta skoða stjórnandi minn, þannig að fyrsta skjánum inni app minn. Nú vitum við hvað þetta er að segja. Við erum að segja að ég er að kalla þennan flokk ViewController, og ViewController gerir allt sem UIViewController gerir, og þetta, aftur, er einhver tegund sem Apple skrifaði að er mikið af vel efni fyrir okkur eins og birta skjánum. Hér er þar sem ég get í raun byrjað að skilgreina hvaða viðhorf stjórnandi minn er, og það kemur í ljós að ég virkilega þarft ekki allir af þessu. Þetta er boilerplate kóða sem Apple gefur mér frítt. Ég gerði þarft að fyrstu línu, eða ég hef ekki í bekknum, svo við getum að losna við það og fá losa af það. Jæja, svo þetta er tómt skjánum mínum. Nú skulum smella á þennan MainStoryboard.storyboard, og þetta er þar sem það byrjar að fá áhugavert. Þetta er fyrsta skjánum á app minn. Ef ég vil bæta við hnapp, í HTML ég þurfti að búa til hnappinn merkinu. Í Android þú þarft að búa til takkann merki, en í IOS ef ég kem bara niður til the botn réttur og ef ég smelli á þennan 3 hér þar sem það segir hluti, og ég get að fletta niður, eða ég get byrjað að leita að hnappur. Og sjáðu, á hnapp, svo ef ég er að draga í raun og falla þennan rétt þar, Ég hef bara bætt við hnappinn til að þessari skjámynd á app minn. Ef ég vil að breyta texta, get ég tvöfaldur smellur það, segja eitthvað tæla eins og "Ýttu mig." Jæja, nú ef ég keyra þetta app, svo við þýða það, svo að keyra hana að ég smellur the leika hnappur á efst til vinstri, og það app minn. Ég gerði ekki neitt, og ég fékk sætur útlit iPhone app. Ef ég vil að stöðva það, getur þú smellt á stöðva hnappinn vegna þess að það er skemmtilegra. Við skulum segja að ég vil í raun og veru eitthvað að gerast þegar ég ýta á þennan takka. Til að gera það sem ég þarf að gera er að ég þarf að búa til nýr atburður dýraþjálfari eða aðgerð. Það þýðir að ég þarf að búa til einhverja aðferð sem ég vil kalla þegar ég ýta á hnappinn, þannig að við skulum búa til nýja aðferð. Ég er inni í ViewController.h. Ég þarf að segja að aðferð til. Ég þarf bandstrik fyrst því ég er að fara að kalla þetta á skoða stjórnandi. Ég þarf að gefa upp tegund. The tegund af þessu er að fara að vera að IBAction hlutur sem við sáum áðan. Þetta er atburður dýraþjálfari, svo það er að fara að skila IBAction, og þetta er vísbending til Xcode að segja að þetta er eitthvað sem ég vil að vírinn eitthvað. Ég get gefið það nafn, eins buttonPressed, semíkommu. Nú er ég hef lýst nýja aðferð inni í bekknum mínum. Ég hef sagt að þessi aðferð er til staðar. Nú skulum við koma inn ViewController.m, og við skulum segja hvað þessi aðferð getur gert. Ef ég byrja að skrifa, til dæmis, (tóm) buttonPressed tilkynningu Xcode er mjög gott og autocompletes fyrir mig. Það er í raun dásamlegt. Tilkynning hér að inni í. M skrá Ég get líka sagt tóm, og þetta er vegna þess að IBAction er ekki í raun gerð. Það er í raun hashtag skilgreind einhvers staðar að vera ógild, og aftur, þetta er bara vísbending í Xcode sem segir Ég vil þetta til að vera atburður dýraþjálfari, og við munum sjá hvers vegna í aðeins annað. Þegar stutt er á hnappinn Ég ætla að gera eitthvað pirrandi eins og birta sprettiglugga. Til að gera það sem ég er að búa til nýtt eintak af þessum flokki sem kallast UIAlertView, og þetta er flokkur sem Apple skrifaði sem er að fara að sýna pirrandi almenningur. Við munum kalla þetta sprettiglugga vakandi, og ég hef 2 skref, muna að búa til þennan hlut. Það fyrsta sem ég þarf að gera er að úthluta pláss. Ég vil UIAlertView. Ég vil að úthluta pláss. Það er fyrstur aðferð mín. Næsta aðferð mín er að ég vil að frumstilla hana, og svo hef ég þetta stóra, langa aðferð sem kallast initWithTitle. Það er í rauninni að fara að stjórna hvað þetta sprettiglugga segir. Titill almenningur minn getur verið halló. Boðskapur þessa sprettiglugga getur verið "Þetta er iOS." Fulltrúi hlutur, ég veit ekki hvað það er. Segjum ekkert það er. Nú á hnappinn sem er að fara að birtast getur sagt eitthvað eins og "Það er víst," og ég í raun ekki vilja neina aðra reiti, þannig að við skulum eyða því og loka krappi. Allt í lagi, bjó ég til auka einn. Svona. Þetta er hvernig ég get búið til nýja valmynd. Ef ég vil í raun og veru sýna sprettiglugga Mig langar til að hringja í sýna aðferð. Til að gera það sem ég get sagt aðvaranir og sýna, og aftur, autocompleteoff var super nice. Ef ég gleymdi hvað það var, ef ég slóst bara í s, Ég er að skruna í gegnum hér að reikna út hvað það var, og það síar vel. Nú er ég búin þetta nýja valmynd. Við munum koma aftur til það sem fulltrúi þýðir síðar, og nú vil ég að segja að ég vil að þessi aðferð til að vera rekinn þegar ég ýta á hnappinn, þannig að ég ætla að koma aftur til klippiborðinu minn, og ég vil nú festa þessa IBAction. The fyrstur hlutur þú vilt gera er að smella á hnappinn. Þegar ég ýta á þennan takka sem ég vil eitthvað að gerast. Ég ætla ekki að halda niðri stjórn. Ég ætla að smella og draga úr the hnappur til hérna þar sem það segir View Controller. Við sjáum að það lýsir vel upp. Ef ég sleppi með mús sem ég hef nú í sprettiglugga hérna þar sem ég hef nokkra valkosti. Einn þeirra er að atburðir sem ég get skrá sig. Þetta eru allar þessar aðferðir sem ég lýst í h skránni mínu sem IBActions. Þetta er hvernig Xcode veit hvað ætti að birtast á þessum litla lista, þannig er það bara vísbending. Ef ég smelli á hnappinn þrýsta, hef ég nú skráð atburður dýraþjálfari. Í JavaScript við þurftum að segja að ég hef fengið kóða sem skráð atburður dýraþjálfari. Í Objective-C það var mjög auðvelt. Ef ég keyra þetta aftur nú þegar ég ýta á hnappinn atburður dýraþjálfari mína er að fara að skjóta, og ég ætla að fá þetta sprettiglugga. Super, Super þar einfalt. Ef þú vilt alltaf að sjá alla þá atburði sem eru skráð á hluti ef ég smelli á þennan hnapp og ég kem hérna á hægri hlið fyrst er hægt að sjá hérna að ég get gert hluti eins og gerð af the hnappur, þannig að ef þú vilt einn af þeim sem ég er eða að bæta samband hnappinn eða hvað sem er. Ef ég vil sjá alla þá atburði sem eru á þennan hnapp ef ég kem alla leið hérna til hægri getum við séð hér á atburðum sem ég hef allar þessar mismunandi aðstæður. Ég get að ýta á hnappinn, þegar ég sleppti af the hnappur, þegar ég tvöfaldur tappa eða hvað, og það sem ég var að skrá sig er þetta atburður sem heitir Touch Up Inside, og þetta segir að um leið og fingur minn kemur út á hnappinn að atburður er að fara að skjóta, og það er nákvæmlega það sem gerðist. Þetta er góður af the hnappur vanræksla þrýsta atburð. Einhverjar spurningar svo langt? Jæja, það er hvernig við getum byrjað að vírinn upp hlutina í númerið okkar inn í hlutina inni í tengi okkar. Mundu það fyrsta sem við þurftum að gera var að finna kóðann, og þá erum við ekki þráðlaus upp tengi kóða, og það er fyrst app okkar. Jæja, það var mjög flott, og við bjuggum til þennan takka. Hvað ef við gerum ekki vilja til að búa til fullt af eiginleikum fulltrúi þessa hnappa? Til dæmis, í Tic Tac Toe ég 9 hnappa, og það væri frábær, frábær pirrandi að þurfa að draga og sleppa 9 sinnum eða ef ég þurfti að gera Tic Tac Toe með 81 í stað 9 og ég þurfti að draga og falla 81 sinnum, og það er fatlaður. Það sem við getum gert í staðinn er mikill eins og HTML þegar við höfðum það eins og auðkenni og nöfn og við getum leitað að hlutum með auðkenni þeirra, það er svipuð hugmynd í IOS kallast tags. A tag er einfaldlega einstakt tölulegar auðkenni fyrir hluti. Ef ég segi þetta er merki af 0, til dæmis, ef ég búa til hnappinn og gefa það merki um 0, og við munum sjá hvernig á að gera það í aðeins annað, ef ég vil fá þessi hnappur Ég get einfaldlega sagt að ég vil kalla að viewWithTag aðferð á hlut hérna, á self.view, sem samsvarar núverandi skjá, til dæmis. Ef ég kalla það viewWithTag aðferð, ég ætla að draga til baka hnappinn með merki 0. Við skulum taka a líta á þetta með því að byggja Tic Tac Toe. First, þetta er storyboard mín. Ég hef búið til þessa 10 UI hnappa. Tilkynning þeir eru allir af sömu stærð. Ef ég smelli á einn af þessum og ég kem aftur hérna á þessari hægra megin þú munt sjá að ég leiðrétt letur hérna, svo ég gerði font svolítið stærri, en það sem ég gerði líka var ég að setja þetta merki. Ég sagði að þetta er merki um 1, og það er efst til vinstri. Nú, ef ég smelli annan hnapp, eins og þessi seinni hér, Nú þú munt sjá að merkið mitt er 2. Hver þessara hnappa er bara einstakt merki, og svo þetta er seinna hvernig ég ætla að byrja samskipti með app minn. Þetta er allt inni á einum skjá stjórnandi, en hér er það sem við höfum. Við höfum 3 eignir hér. Sú fyrsta og síðasta eru að fara til að tákna stöðu borð mitt. Í grundvallaratriðum er þetta fyrsta fylki hönd þar sem Xs og Os eru. Þetta hitt segir hér okkur sem snúa það er. Þú munt taka eftir því að ég hef líka þessa hluti hér. Áður þegar við lýst eignir gáfum þeim nafn og tegund. Við getum einnig að gefa þeim nokkur góð upplýsingar hér. Þetta fyrsta segir nonatomic, og hvað það segir er aðeins eitt grundvallaratriðum verður alltaf að reyna að opna þessa breytu í einu. Þú getur gert flóknari forrit sem eru multi-snittari, og svo aftur í grunni við höfðum mismunandi þræði, og mismunandi sprites mætti ​​gera mismunandi hluti á sama tíma. Ef það er ekki málið, en það er ekki í neitt sem við munum vera að horfa á, Ef við segjum nonatomic það er í raun og veru að fara að gera hlutina svolítið hraðar. Við höfum líka þessa hlutur kallast assign, sterkt eða veikt. Þetta úthluta segir bara að þetta er staðlað tegund. Þetta er ekki hlutur eða músina því þetta er bara bool, svo bool er byggt í Objective-C. Þetta segir ekki reyna að gera neitt fínt við ábendingum hér. Það er venjulegur gamall scaler. Sterk og veik, það veik segir að í raun og veru Ég vil þetta til að benda á eitthvað í ljósi stjórnandi. Ég ætla ekki að fara að raunverulega úthluta eða init þetta sjálfur. The tengi byggir, þegar ég hlaupa the app, er að fara að höndla allt sem frumstilling. Ef ég segi veik, sem segir að einhver annar sé að fara að búa til þessa. Ef ég segi sterk, þetta segir að ég ætla að vera einn sem er að búa til þetta borð hlut, og svo hér ég hef nokkrar fleiri aðferðir hér, til dæmis, aðgerð til þegar nýr leikur hnappur er þrýsta, aðgerð þegar einhverjum öðrum hnöppum eru inni, og et cetera. Við munum ekki fá inn of mikið af rökfræði Tic Tac Toe, þó það er mjög spennandi, en við skulum taka a líta á sumir af þeim hlutum sem við getum gert innan IOS. Þessi nýja leik aðferð er að fara að vera rekinn þegar ég ýttu á nýjan leik hnappinn. Til að krókur það upp ég kem einfaldlega yfir á klippiborðinu minn. Ég smellti á nýjan leik. Ef ég kem hérna til hægri sem ég get séð að Touch Up Inside er hlerunarbúnað að newGame aðferð. Það er hvers vegna þetta er að fara að fá rekinn. The newGame aðferð er að fara að gera sumir setja upp. Það er að fara að segja að ég vil að þú hreinsa stöðu stjórnar. Þetta er ágætur aðferð á breytanlegur fylki. Þetta er að fara að segja að það er nú komið að X er, og nú er ég að fara að nýta þessa viewWithTag hlutur. Ég veit að hnappar mínir hafa Tags 1-9, og það er eitthvað sem ég valdi geðþótta. Ef ég vil að setja texta hvers hnappinn til að vera tómur vegna þess að ég byrjaði bara nýjan leik og ég vil ekki að allir Xs eða Os að vera vinstri á ég get gert þetta. Ég get sagt að ég vil skoða með merki, 1, 2, 3, 4 et cetera. Þetta mun draga aðra hnappinn í hvert skipti. Hér ætla ég að reka hann til að UIButton. Rétt eins og við gátum kastað ints á flotum og öfugt þetta segir að ég vil varpa þessu til UIButton. Það þýðir að tegund mun vera UIButton * vegna ábendinga, en ekki hafa áhyggjur, þeir eru ekki ógnvekjandi lengur. Þegar ég hef þennan takka ég ætla að hringja í aðferð á það. Þessi aðferð er kölluð setTitle forState, og svo segir þetta Mig langar til að setja texta á hnappinn til að vera tómur strengur, og ég vil það að vera tómur strengur þegar það er ekki inni. Ef ég er að nota þessa aðferð, get ég breytt texta hnappinn eins fljótt og einhver smellir það, en við viljum að segja þegar hnappur er bara sitja þarna Ég vil að textinn sem á að eyða. Að lokum, við erum að fara að frumstilla umræður, og ég ætla að segja að allt sé nú í 0, þannig að þetta stjórnarmenn immutable er breytanlegur fylki, sem þýðir að ég get hringt í addObject aðferð og bara 0 inni af því. Það er það sem gerist þegar ég skapa nýjan leik. Við skulum taka a líta á annað. Þessi aðferð hér er IBAction sem er að fara að vera inni hvert skipti sem einn af þeim reitum er þrýsta. Nú höfum við nokkur Tic Tac Toe rökfræði hér. Við reikna út sem snúa það er, og byggist á því að við setjum annað hvort X eða O, en við eftir því að við erum að endurnýta þessa sömu atburði dýraþjálfari fyrir hvert einasta einn af þessum hnöppum. Það þýðir að ég hef ekki leið til að efst til vinstri hnappinn, aðra aðferð fyrir hægri neðst hnappinn, þó svo að ég gæti hafa gert það. Það væri í raun ekki að vera góð hönnun. Það sem ég er að gera hér er að ég er í raun að fara að ákveða hvað tag hnappinn sem var ýtt er. Þú tekur eftir að þessi spila aðferð tekur eitt rifrildi. Það er kallað sendanda, og hvaða sendandi er er sendandi er að fara að tákna nákvæmlega hvað var gripið á. Ef ég ýta á hnappinn, þetta sendandi er að fara að vera að UIButton sem ég sótti reyndar, svo það þýðir að það UIButton er merki vegna þess að ég bjó til merki. Ef ég vil fá á merkinu Ég get einfaldlega sagt Ég vil tag sendanda og aftur, ég hef bara vörpuðu það að UIButton. Ég gerst að vita að sendandinn verður UIButton. Það þarf ekki alltaf að vera UIButton. Ég gæti til dæmis, skrá sama atburð dýraþjálfari  fyrir einn í hnapp, einn fyrir renna. Í þessu tilfelli, ég veit að þeir eru allir takkar, svo ég ætla að segja Ég vil þetta til að vera hnappur, og þá get ég fengið merki, og frá merkinu sem ég veit nú hvar ég er innan stjórnar. Þá get ég einfaldlega sett annaðhvort X eða O, getur selbiti snúa, athuga hver hefur unnið, et cetera. Einhverjar spurningar um þetta svo langt? Allt í lagi, allt númerið sem við staða á netinu-við viljum ekki fá inn of mikið af Tic Tac Toe rökfræði, en nú er hægt að sjá að í raun allt sem við erum að gera er að við erum að lykkja yfir þetta fylki, þannig að við höfum nokkrar til lykkjur hér og við erum bara saman til að sjá eigum við leik í öllum röðum, sem passa í dálki eða eitthvað svoleiðis. Til að í raun að keyra þetta forrit ef ég tappa á einn af þessum hnöppum að spila aðferð var rekinn, svo það þýðir að ég setti bara á hnappinn að vera X, þannig að nú er þetta hnappur verður O, og svo framvegis, og svo er það hvernig við erum farin að hafa samskipti við þetta eina síðu app. Við munum setja inn kóða, svo ekki hika við að lesa það, en við skulum nú tala um nokkur forrit sem eru meira en bara eina síðu. Eins spennandi og Tic Tac Toe var mikið af apps inni á IOS er góður á þessum bora niður hluti með marga skjái. Fyrsta hugmyndin sem við þurfum að tala um eru samskiptareglur, og siðareglur er einfaldlega setja aðferðir sem hægt er að lofa að skilgreina. Ef ég stofna nýja siðareglur með 2 aðferðir, þetta fyrsta, ef aftur tegund er tóm, ég kallaði það foo. Það tekur engin rök. Ég hef aðra aðferð. Það skilar int. Ég kallaði það bar, og það tekur einn rök. Allt þetta siðareglur er að heitir SomeProtocol upp hér, þetta er a setja af því sem einhver getur útfært. Ég hef innan þessarar bókunar ekki sagt hvað foo gerir. Í staðinn ætla ég bara að segja að þú getur skilgreint foo ef þú vilt. Ef ég ætla að búa í huga stjórnandi eða búa til flokk Ég get innan þess flokks lofa að framkvæma sumir af þessum aðferðum, svo til dæmis, ef segja þetta segir nú er ég að gera loforð við þig að innan þessarar stjórnandi skoða flokki mun ég hafa skilgreiningar bæði foo og bar. Hvers vegna er það gagnlegt? A einhver fjöldi af hlutum inni í IOS nýta þessa hönnun mynstur kallast sendinefnd, og hvað sendinefndin segir er að, til dæmis, ef ég hef textabox og það eru sumir atburðir sem hægt væri að skráð innan textabox minn, frekar en að búa til sérstakar viðburðir sem ég get gert er að ég get sagt að fulltrúi þessa textareitinn verður einhver hlutur. Þegar ég segi að þetta er fulltrúi núna sem þýðir að þegar einhver atburður hefði verið rekinn í textareitinn frekar en að þurfa að skrá það eða eitthvað svoleiðis það er bara að fara að hringja í aðferð á fulltrúa. Til dæmis, inni í textabox ég hafa a aðferð þegar ég stutt sem gert hnappinn neðst til hægri, og svo frekar en skráningu atburður dýraþjálfari hvað ég get sagt er textareitinn, hér er hlutur sem ég vil að þú að hringja í aðferð á hvert skipti sem einhver styður á hnappinn Lokið, og það þýðir að hlutur þarf að innleiða siðareglur sem segir að ég lofa að skilgreina því að gera hnappur aðgerð, því ef það er ekki skilgreint sem aðferð og þú stutt á Lokið þá er það að fara að vera ruglingslegt. Við skulum taka a líta á dæmi. Hér hef ég bara einn texta reit, og einn af þeim eiginleikum þessa textareitinn hérna á þessari hægra megin er fulltrúi. Þetta er eign í bekknum. Það sem ég gerði hér er ég stjórna smellt og ég draga úr þessum stað hérna að skoða stjórnandi, og það segir nú fulltrúa þessa textareitinn er að fara að vera skoða stjórnandi. Það þýðir að þegar sumir aðgerðir gerast, frekar en skráningu aðskilin dýraþjálfari atburður sem ég vil að þú sendir þær til fulltrúa. Nú skulum taka a líta á stjórnandi að mínu mati. Inni á. H skrá sem ég hef gert loforð. Ég hef lofað að framkvæma nokkrar aðferðir innan þessarar bókunar heitir UITextFieldDelegate og aftur, þetta er bara listi yfir nokkra hluti sem ég get valið um að framkvæma. Ef ég kem hingað í minn skrá. M, ég hef innleitt eina slíka aðferð. Ég hef kallað það textFieldShouldReturn því það er það sem það var kallað inni í siðareglur. Og nú þegar ég ýta á hnappinn Lokið inni þeim textareit þetta er það sem er að fara að fá kallað, þannig að ég var ekki skráð atburð dýraþjálfari. Ég tengdur við fulltrúa, og þegar þessi atburður er rekinn Þetta er aðferð sem mun fá kallað, þannig að ef ég kem hérna á klippiborðinu minn og keyra hana- en það er hleðsla sjáum hvað þetta gerir. Á skjánum mínum hef ég 2 hluti. Ég hef þetta textareitinn, og ég hef þetta merki. Ég er einfaldlega að segja að ég vil texta þessu merki að vera jafnt hvað notandinn slegið í innanverða textareitinn. Þessi næsta lína hér er einfaldlega aðferð sem ég er að kalla á textareitinn sem segir að ég vil að þú að fela lyklaborðið. Þetta er bara handahófskennt aðferð sem Apple valdi. Aftur, áður en ég gerði eitthvað sem ég þurfti að vírinn allt upp, þannig að ég kom fyrst hérna. Frá sjónarhorni stjórnandi ég er að draga yfir í textareitinn. Ég sleppti, og ég get séð hér að ég get gert þetta á sviði texta eign síðan hérna í ljósi stjórnandi sem ég hef skilgreint að eign sem er IBOutlet á textareitinn. Það segir að ég get þráð þessa eign upp í textareitinn í HÍ mínu. Nú þegar ég smelli þessu get ég farið að skrifa. Nú ef ég smelli á hnappinn Lokið þetta er að fara að skjóta atburður sem ég get nú brugðist við. Enginn atburður dýraþjálfari. Það er hvernig ég svaraði bara að því að gera hnappur. Skynsamleg? Þetta er ekki hönnun mynstur sem-þú getur ekki alltaf finna þig búa til eigin siðareglur þína, en bara veit að sumir mismunandi IOS hluti skrá atburði á mismunandi vegu. Buttons, til dæmis, nota þau IBActions. Texti sviðum, hins vegar, eru að fara að nota fulltrúa. Við sjáum og þú getur að líta öll þessi upp inni á gögnum. Við the vegur, það er í raun tonn af HÍ efni byggt í IOS fyrir þig, svo til dæmis, eins og ég gerði að segja gert neðst til hægri er ég valdi þessa textareitinn. Ég kom hingað. Ég skrunað niður aðeins til að fara aftur inni og ég get í raun gert þetta allt fullt af hlutum, eins og ef ég vil það að segja neyðarnúmer í stað ég get gert það, sem er algerlega af handahófi, og ég veit ekki af hverju það er a innbyggður-í neyðarnúmer hnappinn, en þar segir, það neyðarnúmer í mjög litlum stöfum. Þar sem þú ferð. Ákveðið kanna allar þessar mismunandi valkosti í IOS. Einhverjar spurningar um fulltrúa? Aftur, bara áhugavert hönnun mynstur sem þú ættir að vera meðvitaðir um. Jæja, við skulum næst líta á skoðanir töflunni. A borð útsýni er í rauninni að listi yfir atriði sem er út um allt í IOS. Þegar þú ert að snúa í gegnum alla tengiliði þína, þú ert að leita á að setja síðuna og svona lista yfir hluti sem er kallað borð útsýni. Framkvæmd á borð útsýni í IOS er laglegur einfaldur. Í stað þess að gera flokk sem nià frá því UIViewController eins og við höfum gert áður en við þurfum einfaldlega að segja frekar en allt a UIViewController er ég vil gera, Ég segi allt sem UITableViewController er ég ætla að gera, þannig að einfaldlega bætir sumir viðbótar hluti sem eru algerlega gert fyrir okkur. Við þurfum að gera mjög lítið í rauninni fylla í eyðurnar innan í töflunni. Til að sýna töflu ég þarf að svara nokkrum spurningum. Fyrsta spurningin sem ég þarf að svara er hversu margir hlutar eru í töflunni? Þegar þú ert að snúa í gegnum tengiliðalistann app sem þú munt taka eftir því að það er eins konar skipulögð af As, þá hefur þú bs, og þú ert að lítill undir haus. Hver af þeim er kallað hluti. Þú mega eða mega ekki þörf þessi. The fyrstur hlutur þú þarft að gera er að innleiða aðferð kallast Tableview: numberOfSectionsInTableView. Það skilar einfaldlega hversu margir hlutar sem þú hefur, þannig að þetta gæti sagt aftur einn ef þú átt eina stóra borðið útsýni. Næsta spurning sem IOS þarf að vita er hversu margir línur ertu með? Til dæmis, þú ert að snúa í gegnum borð útsýni. Þú hefur ákveðinn fjölda af lögum sem þú ert að leita að eða ákveðinn fjölda nafna. Ef þú ert mér, að sjálfsögðu, ekki það margar og svo er það hvernig IOS veit hversu margar frumur til að sýna. Aftur, þetta gæti sagt eitthvað eins og aftur 3. Borð Að mínu mati hefur 3 raðir. Loks iOS þarf að vita hvað hver klefi útlit eins og, svo er það sem það er í raun að fara að gera kalla þessa aðferð hérna, þetta Tableview: cellForRowAtIndexPath. Það er að fara að kalla þessa aðferð á hverjum einasta reit inni í töflunni. Hvernig virkar það vita hversu oft á að kalla það? Jæja, sagði að það inni af fjölda lína í kafla. Við erum að fara að kalla þetta á hverjum frumum okkar, og innan um þetta er þar sem þú getur raunverulega að gera hlutina eins og setja textann eða segja þér hvað þessi litla bláa hnappinn á hægri hlið er. Mynstrið að fá þessar frumur, við erum að fara að nota þessa aðferð kallað dequeueReusableCellWithIdentifier. Objective-C er reyndar mjög vel þekkt fyrir fáránlega löngum nöfnum þeirra aðferð, og þetta er mjög falleg ræða í dæmi lið. Hvað þessi aðferð gerir er þetta bara segir að ég vil að þú að gefa mér í klefa. Bara iOS hlutur. Ef þú ert eitthvað eins og 100.000 lög á iPod hvað iOS vill ekki gera er að úthluta 100.000 frumur, því ef þú ert efst á listanum þínum, þú þarft virkilega að úthluta minni í reit sem er 99.000 raðir niður? Nei, vegna þess að eins og þú ert að fletta að þú getur konar úthluta eins og þú fara eftir. Þetta er gert fyrir þig. Þú þarft ekki að hafa áhyggjur af öllum þeim heimskulegt árangur efni. Allt sem þú segir er að þú kallar þetta aðferð dequeueReusableCellWithIdentifier, og þetta segir, allt í lagi, ef þú þarft að ég ætla að búa til nýjan flokk fyrir þig. En ef þú ert á the botn af the borð og þú hefur nú þegar úthlutað nokkrar frumur efst í töflunni sem þú ert í raun ekki að fara að þurfa fljótlega Ég ætla að gefa þér einn af þeim til baka í stað þess að úthluta nýja, og svo er þetta ágætur árangur áhyggjuefni. Þú þarft ekki að úthluta frumur sjálfur. Það er að fara að gefa þér aftur að klefanum. Það er að fara að fara aftur til þín a klefi mótmæla. Þegar þú hefur klefi hlut sem þú getur ekki efni á því. Hægt er að slá inn texta í reitinn með þessa eign heitir texta merki. Hægt er að bæta við að ör á hægri eða einhverju öðrum handahófi efni með þessu annarra eigna sem kallast accessoryType, og svo framvegis og svo framvegis. Við skulum taka a líta á raunverulega framkvæmd töfluskjánum núna. Þegar ég bjó til þessa verkefni frekar en að segja einum skjá umsókn ég kom reyndar hérna að húsbóndi-smáatriðum umsókn, og svo í rauninni samsvarar þetta í pósti app á iPad með töflunni útsýni til vinstri og þá innihald á hægri. Á iPod eða iPhone það er að fara að vinna í samræmi við eitt borð útsýni. Það er þar sem ég fékk ræsir númerið mitt. Fyrsta taka skulum líta á klippiborðinu. Allt þetta var gert fyrir mig, í grundvallaratriðum búið. Þetta siglingar bar sýndi mér hvað dæmi klefi gæti litið út, og ég get tvöfaldur smellur það, að breyta titlinum. Allar aðrar áhyggjur UI Ég ræð það. The hausaskrár lítur mjög einfalt. Frekar en að segja að þetta er UIViewController við erum nú að segja að þetta sé TableViewController, þannig að við vitum að við viljum að hringja öllum þeim borð aðferðir. Næst vil ég að búa til eign sem er að fara til að tákna hlutir inni á borði mínu. Þessi tafla er að fara að geðþótta sýna lista af ávöxtum, og svo að ég þarf að búa til nokkur fylki þar sem ég get sett ávöxtum. Inni á skrá framkvæmd minn Það fyrsta sem ég vil gera er ég vil vera viss um að ég frumstilla þennan array. Ég sagði alloc init, búin ávextir array minn, og ég er að bæta 4 hlutum á það, einn sem er mun umdeildari en hinn 3. Og nú hef ég upp á fjölbreytta stærð 4. Við erum að hrista það upp í CS50. Ég hef nú fjölda af stærð 4. Nú ætla ég að byrja að svara þessum spurningum, og í raun og veru, þegar ég bjó til þessa app allt þetta var þegar gert fyrir mig. Ég vissi ekki að slá út fjölda hluta í ljósi borð. Það var nú þegar, og ég er að fylla í eyðurnar. Hversu margir köflum hef ég? Einn. Allt gert. Hversu margar línur hef ég? Jæja, Ég er með eina línu fyrir hvern ávöxt, þannig að þetta telja er eign sem array sem segir hversu stór er það? Það er hversu margir línur sem ég hef. Að lokum þarf ég að segja hvað hefur hver klefi líta út? Ég ætla að segja dequeueReusableCellWithIdentifier. Aftur, þetta var þegar skrifað fyrir mig. Ég vissi ekki að gera þetta sjálfur, og ég vil fá til baka þessi klefi á þessum stað. Mundu að við erum að kalla þessa sömu aðferð á hverjum einasta reit, og þetta rifrildi hér, þetta indexPath rifrildi, segir hvaða röð ég er inn Ef ég segi indexPath.row niður þetta verður að vera 0, þá verður það 1, þá mun það vera 2, og það er þannig að ég veit hvaða klefi Ég er nú að sýna. Mig langar til að setja textann í reitinn með þessu Texti eign að fara inn fylki ávöxt minn og fá mótmæla samsvarar hverri röð. Ef þetta er band, ég er nú að setja textinn eign í streng. Ég get gert eitt annað hlutur. Ég get líka skráð atburð dýraþjálfari á hvern frumna, svo þegar ég tappa öllum þessum frumum þetta didSelectRowAtIndexPath, þetta er að fara að vera kallað fyrir mig, svo einfaldlega með því að skilgreina þetta get ég nú séð hvað gerist þegar þú tappa reit, og aftur, við erum sem liggur í hver klefi var tapped svo að við getum endurnýtt þessa sömu atburði dýraþjálfari fyrir alla frumum okkar. Aftur, þetta er eitthvað IOS er að gera fyrir mig. Við skulum sýna annað pirrandi sem segir einfaldlega að þú sóttir eitthvað ef að eitthvað er að fara til vera the röð mótmæla. Þegar ég hlaupa þetta, ég ætla að hafa þetta gott töfluskjánum með einni röð fyrir hvert af þessum ávöxtum, og ef ég tappa einn það segir mér hvað gerðist. Skynsamleg? Við skulum byggja svolítið flóknari um app, eins mikið og smella þér valinn tómatur er. The ágætur hluti um storyboarding er það ekki bara að fara að hjálpa okkur hönnun skjár sig, það er líka að fara til að hjálpa okkur að tengja saman alla app okkar, svo endanleg app munum vera að byggja þetta ágætur fréttir lesandi, og svo það er að fara að hafa marga skjái, þannig að ég get í raun tákna hver af þessum mörgum skjár á klippiborðinu, og ég get zoom út og sjá app mína úr háu stigi. Til þess að búa til nýr þáttur inni á klippiborðinu minn það er mjög einfalt innan Builder tengi. Ef ég vil bæta við öðru skjánum til þessa, til dæmis, Ég get fyrst minnka með klípa zoom sem Apple elskar svo mikið, og niður áður en ég leita á hnappinn og ég er að draga og sleppa á hnappinn Ef ég vil stofna nýjan skjá sem ég get reyndar bara draga og sleppa heilt skoða stjórnandi, þannig að ef ég ná þessu, draga það hérna, hey, það er annar skjár, og svo nú að nota þessa sömu klippiborðinu skrá Ég get haft alla skjái inni app minn, og ég get minnka og sjá hvernig þeir hafa samskipti. Þetta mun ekki hafa samskipti enn. Leiðin sem þessir 2 skjáir samskipti er að skilgreina sambönd. Þú getur í rauninni sagt þennan skjá, ef þú ýtir á þennan takka, Ég vil að þú að renna yfir þetta nýr skjár. Það þýðir að það er slíkt samband milli  fyrsta skjánum og seinni skjár. Þú þarft í rauninni ör þessi hnappur til the second skjár segja að þegar þú ýtir á þennan takka sem er þar sem ég vil fara. Rétt eins og við stjórna smellt og drógu að skilgreina verslunum við erum að fara að gera það sama að skilgreina þessar segues. Við munum sjá dæmi um það, og áður en við umskipti í raun frá einum skjá til annars IOS er ágætur nógur til að kalla þessa aðferð heitir prepareForSegue, og þetta er þar sem við getum byrjað senda gögn frá einum app til annars. Í dæminu sem við erum að fara að líta á það að í rauninni að leyfa okkur að sía baseball lið með rasta og sviða. Þegar ég velja deild, til dæmis, ég vil umskipti til næsta skjánum mínum þar sem ég get birt öllum deildum í þeirri deildinni eða öllum öðrum liðum. Ég þarf að senda til að skjánum hvaða lið sem þú ættir að sýna. Til að gera það sem ég ætla að nýta þessa aðferð hér. Að lokum, bara af handahófi benda á IOS. Ef þú vilt geyma gögn það er þetta sem heitir algerlega gögn, sem er í raun eins konar flókið að vinna með. Þú getur líka notað SQL til að geyma gögn, sem aftur er gott, en svona á flóknara hlið til að vinna með, en IOS styður einnig þessa mjög kaldur hlutur kallast eign lista, og eign listi er bara skrá sem sýnir helstu pör gildi. Þú skilgreina lista af lyklum, og þú segir þetta lykillinn er að fara að vera fylki. Þessi lykill er að fara til vera a band, og í rauninni allt sem þú getur gert í JSON þú getur gert inni á eign lista, og svo þetta virkilega fallega gerir okkur kleift að vinna með einhverjum gögnum. Til dæmis, ég hef þetta Teams.plist sem ég stofnaði. Ég bjó til nýja plist skrá, og ég get bora niður. Þetta er orðabók, þetta er orðabók, eru þessir strengir, og svo er þetta gott myndræn framsetning á JSON skjal eða bara setja á helstu pör gildi, og svo er þetta gögn sem ég ætla að vinna með inni app minn. Við skulum fyrst að koma hérna. Við höfum mikið fleiri skrár núna. En við skulum fyrst að koma hérna á klippiborðinu. The storyboard hér, ef ég get minnka- við getum nú séð að þetta er flæði app minn. Ég ætla fyrst að fara að byrja á þessum skjá. Ég ætla að bora niður í þessum skjá, og ég ætla að bora niður í þessum skjá, og við getum séð hér að ef ég svona færa einn af þessum í kringum okkur hafa þessi örvar að fara áfram til hér, og hvernig ég skilgreina þessi ör var ef ég stækka smá, og ef ég kem yfir þessari skoðun stjórnandi, og hér er klefi, og ég vil segja að þegar þú tappa a klefi Ég vil að þú að renna yfir í annan skjá. Ég get einfaldlega inni stjórn, skruna yfir smá, halda niðri stjórn, draga þennan reit á og sleppa. Og hérna erum við að segja það sem er breyting sem þú vilt nota? Ert þú vilt nota þessi renna hlutur sem heitir Push? Viltu renna upp frá grunni? Það heitir formlegur. Og þegar ég smellur einn af þessum, er það að fara að draga þessa ör fyrir mig, og það þýðir að ég hef í raun stjórnað því sem gerist þegar ég ýta á þennan hnapp myndrænt. Ég vissi ekki að skrifa allir kóðann í raun renna frá einum skjá til the næstur einn. Ég skilgreint þetta sjónrænt inni í Builder tengi. Ef ég smelli á þessa ör, getum við séð að ég gaf þessi hlutur nafn. Ég kallaði hana showDivisions, og þetta er svo að ég get vita hvaða umskipti er um það bil að eiga sér stað, og við munum sjá hvers vegna í aðeins sek. Það er hvernig ég hef hlerunarbúnað upp mismunandi skjái í app minn. Ef þetta væri á hnapp, til dæmis frekar en töfluskjánum Ég gæti stjórnað smella á hnappinn, draga yfir á næsta skjá, og það er hvernig ég get gert siglingar svona. Raunverulega fljótt, ef við komum inn í MasterViewController, aftur, erum við einfaldlega að fara að skilgreina lista af hlutum sem birtist í töflunni útsýni. Hér er ég að segja að ég vil að þú að taka þessi plist skrá, og ég vil að þú hlaða það upp í orðabók, og þegar þú ert að orðabók, ætla ég að svara þessum sömu spurningum aftur. Hér er fjöldi hluta. Einn er ein röð fyrir hvern deildinni, og texti hverrar frumu ætti að vera annaðhvort sá fyrsti, fyrsta deildin, önnur deildin, og svo framvegis. Að lokum ætla ég að nota þessa aðferð að við bara sá heitir prepareForSegue, og þetta er aðferð sem er að fara að vera rekinn þegar ég smelli á einn af þessum línum og því að virkja þessi umskipti sem ég setti upp með örvum. Þetta er að segja að ég get haft margar sambönd frá einum skjá til annars. Ef ég hef 2 hnappa og hver hnappur tekur þig í annan skjá Ég ætla að hafa 2 segues, 1 fyrir hvern hnappinn. En þetta prepareForSegue er aftur, að fara að endurnýta fyrir hverja mismunandi samböndum, svo það þýðir að ég þarf leið að finna ef þú ýtir á fyrsta hnappinn eða þú ýtir á annað hnappinn. Manstu þegar ég gaf að segue nafn, þetta showDivisions, það er hvernig ég veit nú að þetta er segue sem var virkt. Það eina sem ég vil gera er að ég vil segja Ég vil að reikna út hvað ég lenti bara, og svo til að fá það, get ég sagt að ég vil indexPath fyrir valda röð muna indexPath segir bara þar sem ég smellti bara, og þá vil ég segja að ég vil að reikna út þar sem ég er að fara. Þetta destinationViewController, sem er eign segue. Það er skjár sem ég ætla að, þannig að ég veit að skjárinn sem ég er að fara að kallast DivisionsViewController vegna þess að ég búin að bekknum, og svo núna ef ég segi d.divisions Ég er nú að setja eign skoða stjórnandi ég er um það bil að fara. Þetta er hvernig ég er að senda gögn frá einum skjá til annars skjánum. Bara skoða þetta DivisionsViewController Þú getur séð hér að í. klst skrá það er að eign deildir, og það er það sem ég er í grundvallaratriðum populating, svo er það hvernig ég veit að ég er að birta deildir samsvara deildinni sem ég smellti, og aftur, raunverulegt töfluskjánum útlit laglegur mikill the sami, bara að svara þeim 3 einfaldar spurningar eins og greina hvað gerist þegar þú flytur til the næstur skjár. Bara nokkrar af öðrum hlutum hér. Þú tekur eftir efst hér að frekar en að segja # include Ég er nú að segja # flytja. Þetta er bara Objective-C hlutur. Innflutningur er í grundvallaratriðum a ágætur útgáfa af meðal annars, og til dæmis, við þurfum að vita hvað þessi flokkur er, þannig að ég get ekki bara segja DivisionsViewController. Ef við ekki hashtag standardio.c inni. C skrá okkar að þýðandinn hafði enga hugmynd um hvað printf var. Á sama hátt, ef ég flytja ekki DivisionsViewController að þýðandinn hefur í raun enga hugmynd hvað DivisionsViewController er. Bara ganga úr skugga um að innan mismunandi. M skrárnar sem þú tryggja að flytja samsvarandi. h skrár þannig að þýðandinn viti hvað er að gerast. Að lokum, hvað Apple endanum gerir er að sýna nokkur gögn með a vefur útsýni, og svo er vefur skoða hlut sem þú getur embed in smá vefur flettitæki innan app. Allt sem þú þarft að gera er að gefa upp vefslóð til þinn vefur flettitæki, svo ég vil fara til mlb.mlb.com, og þetta er hvernig ég get nálgast á heimasíðu fyrir hvern lið, og það með því að farið í þessa slóð vefur sýn getur birt þetta fyrir mig, og ég get flett í kring, og hermir er í notkun af því einn. Nú þetta kom frá plist mínum. Ef ég smelli þessu þetta kom einnig frá plist minn, og það renna var meðhöndluð með því að skilgreina þær segues. Ég smelli þessu og einn, og nú er hér UIWebView mín, svo bara svona hér er vefsíða fyrir slóð sem ég embed bara, og ég þurfti ekki að höndla neitt brjálaður. Þetta er hvernig á að birta á vefsíðu. Hluti eins og þetta aftur á hnappinn hér eru einnig gefið mér algerlega fyrir frjáls vegna þess að ég hef skilgreint þessi tengsl með segues. Einhverjar spurningar? Já. [Nemandi] Svo þegar þú notar alloc, hefur þú aldrei að losa neitt? Einmitt, þegar þú hringir alloc og init þú þarft ekki að losa það. IOS er að fara að höndla allt sem fyrir þig. Það er dásamlegt, og þú ert ekki að brjóta allar reglur. Já. [Nemandi] Ef þú varst að bæta við fleiri lið sem gæti passa á skjáinn, myndi það hafa sjálfkrafa fletta kostur eða er það eitthvað sem þú þarft að bæta við? Einmitt, ef ég hefði fleiri lið, til dæmis, myndi það sjálfkrafa höndla að skruna að mér, og alla frammistöðu varðar með risastóra töflu eru einnig meðhöndlaðar algerlega fyrir mig. Aðrar spurningar? Allt þessum reglum er að fara til vera staða. Við glossed konar yfir smá af fleiri minniháttar smáatriði, en hlutir eins og setja nokkrar eignir á vefnum útsýni eru bara það sem þú getur fengið með því að skoða skjöl Apple, sem er virkilega, virkilega fallega lagði út. Þeir hafa a einhver fjöldi af apps sýnishorn og dæmi málnotkun mismunandi API, svo örugglega lesa þær ef þú getur. Bara nokkrir gagnlegir tenglar sem þú might vilja til taka a líta á. Þetta eru nokkur vel fylgja skjöl. Vefslóðir eru gegnheill, svo þeir eru stytt. Þetta fyrsta er heilt bókasafn af gögnum. Það er lítið bars leit, þannig að ef þú byrjar að slá inn hnappinn það mun byrja að gefa þér allar upplýsingar um allt það sem þú getur gert með takka. Ég hef einnig á View Tafla Forritun Guide. Það sér borð útsýni í mun meiri smáatriðum, hvernig á að gera hlutina eins og dynamically bæta frumur eða breyta frumur eða fjarlægja þá. Það er hellingur af apps sýnishorn frá Apple sem mun sýna þér hvernig á að gera það, og að lokum, það síðasta er Human Leiðbeiningar Tengi, og þetta er í rauninni nokkur umræða um UI hluti, hluti eins og gera ekki á hnappinn sem er 4 punktar um 4 punkta. Það er slæm hugmynd, og önnur atriði sem Apple vill að þú gerir að stuðla að góðri hönnun. Allar síðustu spurningum áður en við ljúka upp? Allt í lagi, örugglega ekki hika við að-förum að hafa sérstaka merki á ræða. Við munum hafa IOS einn, þannig að örugglega ekki hika við að nýta það. Ef þú vilt vinna með bekkjarfélögum þínum á verkefnum eða hjálpa reikna út sumir af handahófi IOS efni ekki hika við að sendu mér tölvupóst, og örugglega lesa allar kóðann á netinu vegna þess að bara í þágu tíma við glossed konar yfir fleiri fínni grained upplýsingar um það. En ef ekki, þá gangi þér vel á IOS verkefnum, og ég vona að við höfum stór innstreymi af apps í App Store. [CS50.TV]