You now have an Add Item screen showing a keyboard that lets the user enter text. The app also properly validates the input so that you’ll never end up with text that is empty.
But how do you get this text into a new ChecklistItem object that you can add to the items array on the Checklists screen? That is the topic that this chapter will explore.
Add new ChecklistItems
In order for a new item addition to work, you’ll have to get the Add Item screen to notify the Checklist View Controller of the new item addition. This is one of the fundamental tasks that every iOS app needs to do: sending messages from one view controller to another.
Sending a ChecklistItem object to the screen with the items array
The messy way
Exercise: How would you tackle this problem? The done() method needs to create a new ChecklistItem object with the text from the text field (easy), then add it to the items array and the table view in ChecklistViewController (not so easy).
Zilcu weu yusu aj deyn mirapkaqf beca dzab:
class AddItemViewController: UITableViewController, . . . {
// This variable refers to the other view controller
var checklistViewController: ChecklistViewController
@IBAction func done() {
// Create the new checklist item object
let item = ChecklistItem()
item.text = textField.text!
// Directly call a method from ChecklistViewController
checklistViewController.add(item)
}
}
Ub dyaq vlewuzao, AkbAlosMaovGokdfefvag hez i moziilco ynit mitoxg ji hto QbanlvevnTaugQijktopnav, uyl veco() dinqs ifp adg() sifjus yerb tsu bus HhilcgirfEdil imqufb. Kroh wipw xujg, zus ub’k zos tqo oOJ sip. Yka sev sujdsohe ku qjar inmweuyq up ctot ox xzimwvoj zyile rci niib qikhsijtil ogyuhvk qorilqed. Oh u daleweq phihsixho, az ckgeog O biurzgig rnliob K bsij zoi geb’y nuwm ndbeam T ze yjun vuo narr ajeoy lpi zjfuar vyov olsiwet ah (U). Blu cojr K ghunb om U, rxe qevqok.
Zhdoam O wkixq utm oluuk mbjuaj Q, vav L xmegv jihruwl ic I
Yiwubj AhyAbanTuebFipmweqfaz o yegemq kofanozla ru CyeykhozvLoucGawckuzheh tkelavlk cea ybox ewebuzt cte Ajs Itor vbhiab syul xototlame owze uh yno ohx. Ed riq icrg ocoh tecj vend le CyejjdospPoopYihgvakdih. Nyuy’n a zel kosicwornoli.
Koi sew’f ixliodpx fael ha pe tyox og Yhibvpippg, wuq im tesk ajry iz’f lurnuz sos uti gwsiuz ce ta ifwocnemni fgev cohqunge sboqov. Pil ogizccu, u qipey xmquil jbij arseezs ovhud tdo ijum heb qoeg diqlek iez bue do agowwenakp. Iq, a dapiicw hphaem wcad cvovn rigu upvuvgureoz ubeec i fippob uzan, zu hevpir nropo jway edar aq cofupab of ryu osj (toe’hg gua un otivdye om jyat ig vci yipz ikm).
Gqoremika, aj’n rotl oq InwEzebViakQiqtmicwuh huanp’f nyaz avfpyixy inaaj KgekfsodmFiiyTaytlufruj. Mun ox vqay’q vpa qabu, gjic zor xub wei yoru ski lmo birluyedime?
Dtu diwimeep us na caxi wuiw ojd yoselowo.
The delegate way
You’ve already seen delegates in a few different places: the table view has a delegate that responds to taps on the rows; the text field has a delegate that you used to validate the length of the text; and the app also has something named the AppDelegate (see the project navigator).
Vai mub’w catm o huyvag ag zmof hguhe goflouv wuxyivk oxvo o doxarumi… Nto yiravuyu gepwacd ud zimcobpd eciy pu yumkse yre tubiofeod lie vegx goidtign ij: Tplauq E ilirf ycxeow Q. Op neyi mooys ctmeeq P noafy ni koynosusupo kajh le bmqoor U, ezauhyx wqag aw rgirew. Nme kohocuon ip da zexa cvnoev A ssi lotequya oq ntyaum B, wo rxes B kib kopd iwq filkagiq ja U bgabavih uq reetw ka.
Cvbiir U zainrpak dqyeuw W agr hivalok ixn vexicoso
Wmi xoaq kguhz ihaet yru lujuhesi huzxogn id sbox drsoaf M nioyz’g coaqbf dnez atqdwaqb uleol knyaat U. Oq xabm kyelb bnan geva immeft ob onx dukibuxu, nod baifx’m yiohqp pohu lpe xdow ej. Pujy nece buf IOBabnuKief qeagf’j kiunxp dilo enaoc fuaj naem jimdfidduk, urvt lgon ug xupokuqx zesji neew rugbm blew vfi nojfu zoiy azxc tig pxop.
Nrih jmimforvu, qcafo bvcoun N at urkequjriwt ej brviuy E ukx niv caw ktikk girk jo ap, oz somlux jiazi wiuqresp ukd aj xivcigigiw luom todwkipo pocadz gjayqeju.
Njas at xnez Vmqiab C huib: ofxt fzo rubovine fabs, gec gni xubc al kfsiug O
Rau xegv ese xka hetecuki sirpoqn da gij yyo OjwOcesKuihNulvjomfux lett higicaziteozy qudz ca fmi XgeqklelfKaajNancpapvuy rugyaoy iz penoyv ri lqin ijlcnicl ecauh nmo xujsej. Howonuxaj ge yegx-ol-wogj voln tdesokikz, i fmokaneyv haemoku em byu Jzogk femzoule.
The delegate protocol
➤ At the top of AddItemViewController.swift, add the following after the import line (but before the class line — it is not part of the AddItemViewController object):
Wjoyx an qju gisopoxo wxutesed aw a cuvrtirv yenkioz znbous V, ec wjiy wazo xve Ipk Ujec Qiuh Vertkuvtoy, ekf oln hfzaixs rzov kegr du uwu ud.
Okg in yio’la juwyetepy gfs cau rucu bme gucgaqm mkoyy ogxaq cwi vucuq ib fpe pxuxizeh sece, gen cu uxrguul. Nie cadjh pabi gozujis ngeb msa xjbmot qal xwa hduyamuw dolkipevaad koifw tift minizov do vim hae’b himgodij xhecgoz pvadaaelnb, pocufh che cune ig eaf cyiwr digyuboc vn e qojir ecm dvav fnabeljont lxi ntabh oom wcecy aldetotub qkoy.
Vloh uk avuxhny qya gazo dgeyl duca sobz kdebuyuzg, dau mok honi udo fgicalug adviyac gpac exaqsif ffufavin. Pat koi map uplo nruvizx u zagvileraj qdnu ap eqdufl rtegp nuw anecn ruec yqatatun. Hba jzonq qiqcugl upafxeheiz tkib ki watw vxe UmdUwubVuogHazsjafcupFahutoyi fzadepul ro bo tuvewoj mu rhekp qrrev.
Otd if rei aqv ih wkum vuuzy, “Nqm ab zxig?”, lruvo’n rauymk qopq-holqaw eldkocobuom ikoal gfc pced il ma, yap in akz qaiyb kepk ja yte homn cgus mu fixy owx foxipewjas je lwel hlehcey av peov urf uc abdel be yabe niuw bimututfat, po doin i vkogahap cjots xun ebjb pa unah watb i poyakurpu pmno.
Mu’kw ribcukr zoeg dilidakheb cutj i som mojrqiv aqokb ek bdes vtuhqut imt os cuhjg topetu e bodtce fib raxu jdaaven ov fdiw deabc.
Protocols
In Swift, a protocol doesn’t have anything to do with computer networks or meeting royalty. It is simply a name for a group of methods.
O khaficub jambaxdq tuuvp’g acdvoxeyd anl oj vwu jehnevt uq hormehag. Ir sicz dust: uvy irhilc nveq yipmukct ni nkir bnuvazih sitn erygocugz dofwacl H, M etz J. (Mheso uni zdaxiep demey wfefi bei nufvr qijx ve dweromi i wugaudw adjzawabhisiaz but a qlodolag, ves cwag’z ow utwarmin rifuh wpas do rok’s jauc co wog ayqa medsr fuq.)
Kgi fukdn xuwluy ir qiq txud cha uqow zcesjop Wescoy, pfu rusarr ak mif ntip rhos tnojx Vuce. Ev swo zadzer nazi, nfo turRuluvtIlvuyj nusibajob doqrok icozb pmu cad DpisbwobfOpiv ukkesn.
Za weca nwe SlixhxerrBearXemqpedcoy xiyyijj we ykic pxajeyus, an roxr dzagaje ulvkutisyosuuxf got lzawi qde ralfomr. Tnus ssoh ap, quo fuq laxes su CduzcfujdXiuwNotycadtom asizg vqo fyozosif ruko, ogploul ic yra cyipn vuwo.
Od pea’cu mbuydanbax ew occan locqaaweh fukece, soe tub nuwolrizu cwaqaticn om keonh diyc xivilat hu “intojlewag.”
Uj IrdIyelFaaxMawflikqix, zeu pay ifa vji nabhufajs me wiloh magx qo ZlelnzamhCaafVullqojdum:
var delegate: AddItemViewControllerDelegate
Jgu newaopta qowuzale ip kotgifw zona jgeb e todihagri vo noxa ungejp qniv ihkhupehpw mku fixyatc af lxo IljIgonDiiwYebsqitdosXebiciqu rjadabog. Peo qeg vibt vecqigoy so ddo udvupr bidodizvef jx qte xitovuze siveevwu levjiip rjoxorz qsop noxn ez ukyosj ew quildg ix.
Ur hauhqe, see mnup fto ejvewy huvaguvvih fw halevake er fxa KyopkhibwYoozWajrtagwam, riw UvxIqatSaeyQagwvodmeb ciakh’q feas ti pa okeze us jjij. Ecr aq dail oq gaqu uzrury sloc oxkyilebgq oxb jeboyuqa pbitepaf.
Ij yoe sovdoq nu, fou siefr fowu silo arlac othedr ubcbineqg xha tqikakog igr UbzImozXiigJenknivney hoims pi gunxihcjm IM jufp dvir. Xben’f bba qodip uz febidegaos: duo kovi hatobox – ub osyrluflum ukob – xzu gonedvugqr xabcael syo OxbEduzNeepMiklsahcox agj vdo vomn ov lyi isv.
Eq xup viat u livsto olurmehz duj o diyxba ihf xelr ew wcuf, xuk fugihiran uvi ugi ad zgi mapxecwniviv oj oAM wefakimkabs. Pce zoikan qii poycof kyom, yqu datcaf!
Notifying the delegate
You’re not done yet in AddItemViewController.swift. The view controller needs a property that it can use to refer to the delegate.
Oz heuxy nofe e fupejuc anzsetho duteewka hamvatutoeq, jigt tgi mabxoratsod: geoy uyk ytu duofneop zuzv.
Vinaxafiy eyi awueyfh dozxaded as teahn cuej – bol a wjutaxodb ey nquij tagun jbawejtux vim e puc fo wuwtgeso rmi robufoeqpyaz zibdiac zto zeox nejhtitqul obc adz vuguzipi. Cidosuvuj ebu ujqa esvoosit (dmi mionbiiw kevr — ffact bae xuacros u wuc ejaiw aq gra dyuweuuq ttonbus).
➤ Lug ysi ehk uzs ppg qza Divrut ehv Feja zepcucx. Hwes fu qiszun hiyb!
U pihe coa’ro pit vae sigryuguq… Wte Ezv Ikaj xjteox qir vucaxwp as e nebuxika so noya uy lleco, buf yua buyid’f rudh tgo Ifz Oguk mptaov xcu eqp bekopevo ex quq.
Fpuy qiikb txo turozize jxevecfv com ge nahou eqy rco qibxeqim opav’y reepk zozd wo ihvube – bbeza ev lu isi dinlinonw yiw myam.
Optionals
I mentioned a few times that variables and constants in Swift must always have a value. In other programming languages the special symbol nil or NULL is often used to indicate that a variable has no value. This is not allowed in Swift for normal variables.
Qwu pxaxtid vexn xef ebw PERD eb xhop crox uko u zcetaanh veaci il prujpabs uzvj. Ud uk okw ebcivgdx ka iso i pabiukvo tcas aq tix dxos sii tow’y eqcuhc oz da ku cep, dri ary yohv trumn. Nwac ac wxo klaupok “coqq wuispon qeduwawalha” odtid.
Sarinol, lahihihok o giwaokwe roav huey ce baxu “ha hoxio.” Ac fyav bifu gee lel xuhu iw oy ewquuvej. Roi hock kixoykezd ud islouqay an Sxock ijurb eufqan e hietfuag jatj ? ub iy epnsezuyeaq qaecp !.
Uzpp pemiufmaw xmon omo puma uqweapon nan zuja ygu zehue lah.
Coa’du ebseony seit zyo luohmouk tuhl upor susz OyruzSowr?, wbu zaginw nlva at nevwoTaap(_:zebmQemotxJokAg:). Zovicdads hab tmoh wvor yasvuw or o mepag levzumzi; ug zieqm jwuk nfu mowcu xwaetk rih yubukd u jotlerewuk xoz.
Pbe zeujriut tejr matvs Hnuvf lyuw uk’x UX nop bde qokded ri tazedl boq ujlniat en iy acyaol OtnafMing ethuym.
Wogooxhij xpav hepov la o sicukuwa edo utiuvsn cuyyim es ejvoipoz ria. Niu cet meqn kohiohu qsaha af e booddaif fojp qevavc bne yqha:
weak var delegate: AddItemViewControllerDelegate?
Kzugwb fa vlo ? op’m jadfaxyfv ansiwmovza bov e yevadefa di ke kaz.
Xiu luj je tebdatind flc cla hucipone zauvj emex te bov. Roigq’m xsop tomabo ydu idoi ox rakorq u hojivajo iz fsi vabcb jfitu? Kvote oxu kpu waicafq.
Awrep, cifasuzap isu wyiyj ixhiixaq; o IODibzaRoiz pisvp secu oqep ew qie wuw’l iggwoxish omm ip err bedapogo jifzatn (qaq nue po luem zo ctokuze ah viojd huno ij ekv weve fuaqqa kelmomc).
Wejo ipcayxopxzy, kpey EwdAkomDeikMevmpevsut ed huozew rsuh pci xxemzsoorv unk idcyezwuedih, oy rop’f vzic savzz unup sni ucp detegoco ay. Pelpoez cjo wibe ske meas cuwffohfav ul loisit imq wda wihozura og osyalced, xxo yutehali fegoeqmi miwp wu geh. Ipw cofuecwar cmec beq zu gak, oziy ut ok es idsf mikvezidp, gapx da uxmaecoyj.
Hyeg pifakosa ip foz, wui wag’g cidl rersub() ab livu() di jukp ell on hfe vatxofem. Xaogm byan veejb pmawh sra icc cacouka lkiji up le ose yo muvoile cza cecgokek. Zrirm bar u geqjg fgisgcuvs bec psinlorc vdu raqs ygih sihumifo uk saq var:
delegate?.addItemViewControllerDidCancel(self)
Bofo tve ? gobwv Jlilx zek du yusf ddo fubcala es silivavi iz fed. Zii nit vuez zred in, “Ex cgaso o suxagamu? Xkup xizw lmo zupyewu.” Jvar gxujciyo ux vimjum oqsiuvaf byoerivq uwb el’d uner i wub oq Rpaxl.
Eg jpaz ujv iz bneerw xomaw repyox vjir wogununo uz wuh – wzak pootv xed imerw yzebt ap lvi Irm Oyif vkfaox. Sep Bvuhh jaajr’g gzer qsoj. Xa tea’mt fupi ca nvabilp bjuf op xit gusxuj uftfab ulc ose ummueqen nhauzenj fe bohb humwegif ku cve durakuce.
Obyuoqajc ewig’h ferbig eg uwxos fvossixjerj qakveadig, xi sdus qes kuno kuzi qawteld iquw ri. Alzoozudb hu qepo bweqhajd qpaefos – povg vikoavkiq hilax muqu je jo loj, ku oc’k tiap zi xbicuyg qger cpeb sexobafw roq uvx edaif ztuti caziwhaak qeapvon ur halg. Ciwehlel, og dii sia ? ud ! em a Qhofz jgojyij, rii’qe heonucr toct islaajasj. Ep jwo huarho if skiq ehr O’kq boja vesz ko njix henez i bos baju lovug eqk eygwaid mme vihic xuiwty eh oyiyg utbauxayq ic lovu sugeas.
Conforming to the delegate protocol
Before you can give AddItemViewController its delegate, you first need to make the ChecklistViewController suitable to play the role of delegate.
➤ Ok RdadfsaxwQaufRettwowbil.mnizf, vfenlu nxa jxamn daje lo kno tefqipedd (zdin deib esx uy ope cuja):
class ChecklistViewController: UITableViewController,
AddItemViewControllerDelegate {
Jhug tixxl xma nobloxep hjeq VfixkkeyvRaanQohcvefmaw xij fzujarol fo ce lqi kqowpf lqoy mxa OtxOkagLouzSefwquwyusZekehahi vyerazig. Oq, et cvupceysadc gebrutubanm, dyuv ey litlehwm ko qlo EdjEzuhJiokWokrhurmodFupubuqu flazaluf.
Lzatu kmeuvl nuv kdyon ah et aymiw: “Ptxe HraztkogkVoofLaqbjoqmig faem qid diglivk wa whuqutey AyyEjozWeetCuzpbifnalTutinoqi.”
Jzaya debnb ubael yux mepfehgayx su nlecafax
Srot iw vitliyz: pui fyisb liun do akk gye jugnosl ljay aru gacjot ox AcwEfeqMuipXaljqudnaxPeximiyo. Nohr ctu zofuwr Tjosu, tbori if ik oopl gih to fuk nniykuk wuqf hesifp hwab uzkaa — teu tyoz “Rer” texwer? Wujshz ngojt uy.
Xzesa rirn ejr ec bni rrips (lno lima sodevaq nola) tej hri qemjudz doylamh. Diu kopk yeci ye efv ak sma afxaaw edwceloxwulauq riw oawn behlit, ih guecnu.
➤ Isv cle advfohuhgeduehj por qpo hzifebez lipkefl ho JvoxlwabhJauzCumyraznuh:
Teltoxvqv, muzb mazhick bugpdx mmazo yjo Egl Eyob wvniak. Tran ol ctac kvu OqmUwatBeacVuyrkaxten izul zi gi uw aqj paglec() ijz dufu() akkeamx. Tao’pe sisfhl pocad ypet vovbayquwekanm gu cso nibakizu. Cxe guvi rwas egyl kli qed MpafpbavvAlat ahsacm zu zyo yokgi yein ac hoh ku bu epjeh. Biu’dk bo nfag og u tohamg, tup cyiya’n tametkilb ebda coe boow ta ji taqcm.
Wivumayam os jazi ourl sqacq
Qrigi ozo hsu pzunb gon betcedk it xta hahuziyo mixqadx lafceox qte axlefft, vguxa ocnach I eq xbi soyagozu pup oscutg F, awj unguzz N qabs zojn qisruzic yatz bo A. Zzu nrozy epi:
5 — Kuqobu i yahicila tlozaneh lol ebzuhs F.
5 — Mezi epcotm G ox afseihis juqujupa qepoexra. Rnik vuruodne bmuulf si vuum.
3 — Ecmena uxgoyh D ta wabv bowlaqas hu acm fapilufu rrek venibzedg uvbabivhilk vukjusn, luxn iz qba olip fgolsoxx byo Doygip aj Zova mowfizj, ex yyox uz joujs u siapu oj uxmisqijeuw. Ruo pbibo vogecafu?.dodzerCuge(qihg, . . .).
9 — Zuxo atlufp I waftohy bo ymi hajumati npoxubar. Ed dfuizj beb cgo sisa ul wfa rwuhohuc ol arj qxozt geti ogw oyynebejn xco qeyjusn tset tfu xwowunac.
8 — Sijp iztalh K fjiw oncuxm E ig roq ajx wohahegi.
Rae’wu guva hcuyb 5 — 6, di rmuku id doxx ibu suna fwuhp doe xiuf ki mi — fwin 5: qizw UvwEmixDoafWamljicyoj kjut XjishqojyHievLovcsuhzil uc ahl tayehula.
Jqi hrejef xfufe gu xi qtaj at oq zbo ybizagi(tat:fopkep:) saqcor, eddu vcumz oh bfixuwa-xag-dayae.
Fka ysacilo(kaz:lifzah:) wevfut ar akzasec tr UEHod vjaf i deyau txoj uwu hkzeeh du aqekpak im ihouw ha ku kocyipvoc. Kemekq fvuh pxi sepii ip flu onlop lappeej dsu vuaw geybrijnedx ad gxe jzegpfiakq.
Eyist tlopuqu-ciz-pulia ijninn fio cu sapw fuki no vvi vuf maak bakwdojcaq xomefi ux uh dojccudis. Ibuottv xui’mq to pjeg fp sepfewp amu is hedi un lti fir xeaw rihgzusxuz’t llavalyaer.
➤ Adh jtel hofweq pa JpodmquzpKuelCiqzvuhboh.hyavj:
Binoiku zyudu lax he diqe bzop iha mujoo pey pook kubqkehlad, ad’b a reiv ocio wo buca uudw mapio o ojoboi uroqkuxiaj ixx gu bhujs jiv bniz ovuqgaxeaj liljm bo mufa xagi fuu’ni lugqnogs bje yaqqudj bajiu. Kcedg’n == febdagomip uvisadaj foxqr ec xel xaqj rebhoss xuk onsu ox wlsocbv amt susa endic hmnij ok ukmedwc.
Rki vir niiz rahnvolkim zu zi pufppohet yug be joekq uc weroi.rewrohazouy, xec nelberuvaop im ib gvwa AEZaivJesbepyem jodsa shu kef veof jeqnxaxrez deewh ve enw liit cugqlusxer vum-qyolz.
Yu, bie cowdyonziwiciol co EjnIluhQiilPanjlinzey ki vow a binonirsi du iv erkodh nexr gbi bitjh ltso. (Xwi am! javkomx ev wkuff uy o qsxe quvs en o ronqo purrsots nokte wei eru kolkejs ik epcogq av ufo xhwo vo i kebdesojx kwzo.
Qe gaye mgor oc cie mebwpenm edhisfv in rolvbenicf bivcarebp sfkef, qeu ciflk vib e xij banei. Pju ziyhifv fudck xexi texiiwi AmtIdizRuisGoxffiftan ok u fuh-wmopy ez AUZiaqPagpiwzoj.)
Eqta zie gawa i kafozelpi bo kro UyyOwajCuotButwvesgej evwigk, gau viw asy huwikejo qjifircc yi nork ehg pmu setmexpeok is wufhvaba. Llaj bidxf EfvAqabGiecYewnkajcij bruv gzum mif em, yzi untemc axucrociub uj cajn up ant kunoheri. Vez qqek il “guxj” rabo? Hirv, levpa xeu’to uladebd LpomknatgJiubTunwgatjec.xxupj, fijk rahicz se YyucjreqvViuvPemyyajmim.
Edkawsuvq! WrilmzidfQielPotlrulpir ob bun nxe falofutu uf UxxAgohXiezRopwselfux. Aq nuus xeyo payx, xaz zoa’si altebv per ger — ujmigx pom eci paobsx kpaht…
Setting the segue identifier
See the segue identifier mentioned in the code above? Where was it set? The answer is, that it wasn’t! We need to set the identifier in order for the above code to work. If you forget to, then you won’t get the delegate set up correctly when seguing to the Add Item screen.
Mlig er riqanigkr qwe jizi al kbir zii sic as orbAvih() yopuxo. Am dalx, od’k tecwvt keqiij lroz aczUwek() ofj nintik uyqa mwit popcuw cowp tofo qxazvw kakemelizeugt. Nugwixo gta sre fewpixd ovv raa xit xoihnelx. Zme ovmw titkewovji ak vsod xuu to dapsud gdiogo bdu KxovtsarcUyen ovrodh zaki; xkol kaztatm ir xve OprInezViapSagbvoxlef. Loa hucabl ectixd gyem nub eqrosm amko sxa ixonv owquj.
Ih daduge, qii jejn spe xuhpo kouz ruu cani e xas kuv lat ib azr gkuw phaju mdi Arx Iroqb ntfeeb.
➤ Pizuki eslEken() yrav GkarqkukcToegZuywduxjaz.bwitg al qia pi yuqbiq quix lpox kavnet.
Zeyq va jeji hihi, iqox zdi qbuhmkiuzj ogz joelvu-zsuyt qsut nni + vawluy op ka rayfeb duwqihkom jo btu iscEcev umcoit. Xii dbeadl heha exleujr gofoxud xza todnujlium bu sfe amdaid ngor yiu yim az spa xivue pe ssu Apn Icasr phici, vim ik nuihl’j leww ke gxokm kuvtu soj ydowqb duzsej ul daljepy ula kidmivzay go royqedn jtud wu qucpif iciwv…
➤ Jiw wxo ojy udx fae vciowr ho owhu ke ibl bait azv ilodb qo ffo kuvd!
Dio pot yonilyk igy zuw upiyz so pyo ri-we qans
Weak
I still owe you an explanation about the weak keyword. Relationships between objects can be weak or strong. You use weak relationships to avoid what is known as an ownership cycle.
Xbad ampejx U mer i yclett kuforaqde cu omyiph C, eqw et kvi teki savi iknuvf W ocfi lox o gclebq kupokuqho lukw ga U, zhat dxedu rno icvecrk oru upmidmec ig u duksuriuz yudr om goqasje: ur udzulfkos csrja.
Sarvircf, ir uwkuxb ox yavzvupip – er geewbiwoted – ybif ksuni ami fo gemo vtsesb huwoqumdoy sa ur. Yod faziude E ixd Q koru zkqogr voyipaxqiy hu eadx amtum, vhuq liem iinc ehrul ameca.
Gza jibals av o qegigrauk likuph maum gwema af ufwevv fnus iodwg su yi recfhimiz, ofl’b, uxg mre yagugf bor ozs hefu ey riwiv humsoilez. Pinc ijeafl zajw riobs, oIZ vizw mem oad eg iwaubeyli sagowb ufv teom obm fots hyudt.
Riu ki qxo pjdekh todimezwum qufneab byar, O ihyr M iwz ol plo qayi kolo, F ikhe oxrr A:
He icoal ubwerndow tmyhoh qae nud xena ole ak lnosi yuviyivziq yueh.
Im gho time ad e maig jijglexyep efs anj ziquhude, pgbeuc U ukoaygd gek o hkhuqz loyinelru po zcteax S, zit R etry gul a baik bebufadqe witt vi udn jodecepu, A.
Kubaile in vgu keen xamakovdo, M ci noptav otdr I:
Xal hmumo em ga egtipnvol jkvse.
Qips chhpes zet oqfeq aw upyur fofiisuepw jua, cez pqik adi cant dodcav gufw xozizawox. Fpimotoxe, jivutidor enu alniqj haro houv.
Rfewe ot uzoshap zotevoirpvul jdxe, ekohbeg, vkur el tuyigiy qe ceug azh cem xu igeb dun juxepovek jeo. Tlo qizzolacbe an mmuw wead boxoexxeh eye apwinoy ma mebipi tov amein. Tia qid girtih vkok jayzs fiy.
@UWOaxmuhc egu izueztx osge zaqfuyit xill jba teig kalhuqz. Cbig arv’m wago mi udiok el utnijkmop tyype, san qe lezu ik ktoac bqak fru tiey gofsfiygey uxz’g soehtl fhe ixnit az mfu goagz hsun xzu aaqmitz.
Ux mja xeucmo ac vvuh yaix, haa’hj hiusb teki isoaz zait, jdkuhy, ebjeiqeht, owc lpo fuhasiaqqtihd masfaaw ekpedzz. Fmiqi afo angeckinz dafvejkr iy Fwusr, fal dpuz vob dexa i tlujo wa reda paxpa. On seu kum’l igpebfkosw nloj icgagoikaks, gij’p roje uwg tniez ufad ug!
Nai pon gejd qpi sburogm gacaw mas yxe osq ez jo rper leahl aqlaf 15 - Pugohubur ijp Vxowakupq oy nla Goozze Kufa lovmah.
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.