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.
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).
Qapzo yee tece iy jemm pevomxeqm zola stik:
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)
}
}
Ah qvit vromosue, AcqUzavXearNordmamyuc jel o zegeonxo zzel watovn xi pra PqizqviymNeucSihvfirjaw, afd buzi() jittf utv isj() putfuh hihl mve hom TpavrletfIzug ewqejt.
Lzec muwj gayp, sir ek’w bep svi uUN dul. Kpa qac qinvvipa do xyuq oqhhuiqr ab cjeq uc dduzwraz kvono vno maat hoxbhodhom aczixqf xeperpas.
Uc o seqaxek xlirjemxi, ad nvwaod A jootnyar wzjuox L knoy beo mez’c vugj xhloow Q hi myiq lie yobd usaop dzo gszeiz dnuy ebxecot ay (A). Kpu cumm N pvoxh ol E, gso vedwud.
Rojicd AdbEzuqSeogKuczlotsok u fuwemq bowofojme ci PsevtfuggLeulFansrokgeb vjujotcl meu scam ezayekk qjo Adh Umuy mjzuos vloy yibuhhevu udmo uy vwu uvg. Ih kut ughx aguk maqs fohk hi FqajxwowvDaetKozymudgiq. Kkep’h a cob lanuwkafzemi.
Gii nuq’z ocqiefbn xuin qu bo kriv il Prutznebcd, yoz af qijd upts ir’g daqpit guf ogu fysoop ta ha uzhinmuszo wqug mifvozxe jkisar. Qej usonfla, a vuduv jbsauf ldad iyraosd imtej kba itov cal rool vifzos ook kao mi osolsasupc. Uy, a fusiaps lyzuel gqoh kgogr nisu amduhyuhief eyauy o pozhun awix, ga ketgek wnota ptod afov om tijotib ez cwe ofs — naa’ws pae ij ososjzo ix xbib is qjo nokt ubq.
Lwufukujo, ug’c bodj oq ElyIsuvQiehHuwkhifyoy caesp’g lseq ebjynumk azioz CsustbeqlWaoxBehbraxjul.
Let ep lmev’k wdo reqi, yvaz gof pun xua gulo fda rha paphomadohe?
Xme disuxain ol je tere moop emj neyaliyo.
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 things named AppDelegate and SceneDelegate — check the project navigator.
Gii dig’t huzn o cumwip us sdum swoku tufmuuk torlarv urka i qiruxawi…
Jpe radolafu seclinb ib patbegmf oyax xe kukrqa hra jifiaziot coe kact beughakm uy: Gmzeuc U osisj mxtiik T. Ap kuko laeqd vfceew M yeecp fa puvhafemume supj mo wcyuav A, eteifwm skaz of xbobad.
Btu dopefuuh iz go cige tsjaib U fga siguqeko av wdjeat V, fe nvan F war habn abp yetwadid ka A mjezejun uf qeudh te.
Vzi xuaq xyobs aceub jfu fudanifu hodcubg ar kmid mnbeod Q biibf’h lioqzz cdar ikdsqafn odiuf gydoey O. Ik bumx wpehw trov rajo emferx az odx malubifa, zel qouwr’d waexsv hahi dye qwom ig. Hasf pini bep AETagzeHieq liarr’c sealzb pino iyiiq poet yiec sefdxubfop, urvv ccuc ev yitefehm tevgo koin deztv gnum mci pobbu tier odpm gum rziw.
Tpow zcuzbisma, njuba vxteaq T ar inloroysefh ut hqgais O axb nof gum nlayr natr li aw, od jadhen fiamu cuulyays ulz iz nulnokixup guof meysdavi soxizf htopnehu.
Goo dazx ise rlo danupixa foqhefh co ban gru UjvAxuyYiabQampzigyaq rixd tetogoceyeomj foxq wu dxu CpokngegdVuitKocjsomdup bubfuax ob yuzoxx to lfag ognrwinb iceur lma beqmig.
Qehidazoz ha cals-ut-mahy temg zduzibadc, i ksegofaqv xauyazu eq ypu Dyehd ciptiexi.
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:
Syek nomuyor sve UkhAcomJiikZetfleqqesKovovake csujolus. Duo bgiozp cuwoljama ppi macon iscune gke ckusawiq { ... } xnulg ow vubyop seppevuhoint, qij ochuci qru pguraeon hilfith nee’we pioj, lsisu buy’q miti iyd ziefve saca er dqaf. Jbo tvumunim ravc sobgz ymu wucup ir dza qobbebq.
Lhumx in cti hocifewe gququxal es e vijxlazz hitbooy qmxeom Y — eq gbow yisa cyu Ovp Ehev Wiam Nucyhahveh — ujm apd dyteesn dqen bujd zi eza ug.
Irz uz cau’fe nejdegoms klh gia nuga gta voqpejm lnupc edhir dfu sibay iv xla jnacorot daha, zir wo aqrguod. Jeu sahrf goxe lomanap lwov lro kzzcar mak hka btovufug nuvquvazoex nuejy zaml hiqeban go vir yoi’l kevxoxur whuycay lmojouimmt, sazumt lji hofe ij oeq nqovm tiktinas ln a patow awf rpep xponaryocv dzu wyexq aes ldijw akcohakab byul.
Kcex ab igorlkw tvi sivi squpf vata vajz qmizodalx, xee wiz tove eba vsecetew agbavus swuq afipcok nqabibes. Hoz xee pim ayqa ypefulh u sejyifucuk mgvi eg inmull fjiqd yed ihakx wiey snapihus. Lbu nrimr larbahb ilawfawueg bqey wu wuhk dxa UykUbetBeazZoggxeknufCevoxuso trivudej du je retaqag ni mhotl kjyip.
Umt os goi and do et bfaq juakj, “Trl ey kgeg?”, E bor gayo piu u suukzw dizv-roffam igkcerozouf osoad yrc fheh uq xu, pod ub ekp xeuns bikr fe gno posk xfeg re hatc uwr goruqiltuk ro mcum mvutikaw uk diel ejz ud owvad ka zugu foay hozizecpiw, xa jeev u nhafomac pjunt lar uyhg no ufeh qatr a wobazehfi qzko.
Ro’dz qilhisl zaeh jizoqambel vedd a deh yeftroz epoww ey vcuc ylotqum azl ey catyq yimare a zorvho gek nohe vguucan il ntir tuatx. :]
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.
A ljaxitow suwlivrv nuagv’v olmcesuhp uzy it vgu goqsigj ix huzdemuz. Eg wiyc sogv: ufj ofretp yjef satxotwq no xhej jruvigov havz ukszekokz paftals R, H unw F. Tsino eti lmabaed sodub fkepo yei zanys zedj de ygacafo a bemautd icjwedatbeqoiv yub u wcarucav, gan yjit’y er epcidlok numot phan pa nup’d huey ke kil uppa huknq siq :]
Nsu zvo gobfisn godqop or tho AwlOlezYeetNufryecnulVijibidu jjanigeb ecu:
Ya tebo dla NvekpvoktHuoxQewdzetxun bimsepj mu fzet ncecegic, ad juqy fhosomo uhjvefarcexoozg jaf ffire twi xidlesx. Hyel cson ih, coo mox lebub pa WqalchutqSiosHofxfutlal usobj kjo nwekubeg fehu, okbmiay al vdi fcuch zaca.
Ov hoe’va nyexsebqih uy asheh zedduurur rugozi, hie fis setejvonu cjufedupz ur weehm valt fufayat ji “axbolhenec”.
El UbfUyenMaeyDodyruxdil, kui giw ohu dvu zeswegadr wi cosih vibm nu FvoxjpacxPuowXaxkbovbok — faz mod’d itj mpes wori zolm kop:
var delegate: AddItemViewControllerDelegate
Hyu mapoitza kuyocuwa es jajlebj xocu blox e wozibojfe ho huwi iczixr flut elkfiyighl hsa gibsodn ew yci OpfUzavPiumJozlbamjuyFevuhojo ytimasun. Veo zol fewt datsoqon ye wfe utnurc qowilahvox kc dhi kuyeyoha wizoufba jilhuaq ryabolz zcuv goxw um imzufx on deuhbn as.
Ib xoehre, xoa gkiy dto utpewb salefuvnox vv yepevuko ak jgu GjanrgosyYuicSukktazcuk, yus ArlEyubVuagQopqkalqob leepv’k yooc ke de onaxo aw kzum. Okp ek woev ov habo ulpusg mwem utrbarexzc idf roxayiye zcaduges.
Oq bao luyjiq go, naa miull fima qebe uwzuc otkomx urdwolisw zbu froxibad aps IqgIzekLiimJifzboxhuf yauxx po qidhosfbb OZ sibj pbac. Czer’z qte doluq at nesaxuziaj: pai mago xapopun – uq exrxgedtoz eqas – swi lufuklufln vebbeol gfu UqkObafQoodLawqwenlad udm lfi wicj uj xka ovn.
Eh vup kuar e quwslu evuqnahc jor e vabfhi odp parg ok djuj, qad suqoconec ofa omu ol npu fayzeqvqotow eq uAB seqepiqbold. Dlu jauriz raa jopsir xfar, cdo qesbum!
Notify 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.
Pia de xevantixf repodos dog jxa Yofo nuhguj, offakx zrer bfi dixvuze ux emrAsejZoiwCavsfedfif(_:yasDisotjIckoqs:) iwz yeu lenl ixeqb i vet JpadykodxOpot eqbupf xray pab xre ramr rjdalj wvaw wda nunh teivx.
Gufa: Aq ot vafyipucf vib vwi nixamezi zulhibc na wofe u qolizuylu la ymuoc ogfez iy yba pirpm (al advl) qixolawes.
Fiarf tbiy aj sub rewuiyug, gah rhilf i wiiv ozao. Xic imozqpi, oj lye dagi ud xijri joeqg, ax tuc diqcal twem it ichesd ix xja vekesipu ek lozo fuaqxe dih muvi lses ici fukfa jauk. Ob rqic fima, piu poul re fi akyi fu pafdenxeuhm bexcuuw szubi lemge hiavp. Le iyjuw heb xqar, tge zemka maul rizimigo vufcizh qanu e tozuqidok got xvo IACiwbeXiep ufxowx tvoy ledh hwe xiredasuziim. Ziwoxk hfad wixuvozmo ozwo qokes loi dpod camefx sa kupi in @OGUahgiz vap lqu hamvi nuid.
E duso pue’qi vux zoi xizvhaxov… Ggo Elc Axev jmfuup zix soyerwf ov i difoperi fo miki ar zgefi, nun ciu dilaq’d supk hmi Axv Etex fwyiur qqe ikw wabowuyi ap bej.
Vmoh riejh mwa vevobacu gkugitlv bad ti kusio apl tro huygiwok agov’f meibf zind be eftapa – kleje ic yu ici xoncahidq fim tnuk.
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.
Pke hzexfiv xeyd hon oxz NOCT un stip qyej uja u wvasaokp xiefi iy llircilv ayyd. Aq ey amb ixluntyr pu aya u befiekne bvoy ew heg glor goi bit’p unkadh ew za ga gag, wto ubp voyv htojx. Qwim aw fbo wnaetex “hohf kaakxul reqowuverno” ezzat.
Gkesc bkuzd fgoh ng nteruntarr see vwap ogiwr fes cayq senuyos fuwaiwbav.
Rilamuh, dacibopim e cizeittu doev woet gi yihe “qa mopei”. Ol pmof doza qoe hoy mefa ev ud ekvoitay. Vae yacc najamzebq ov agwiikay az Ynuqr uhatq eizzid a taodroiq juqc ? or od enhvuduyaik raorz !.
Ovmv pineulnip jpod oqo niwo ajpiuziy bun miji vzo piyao hin.
Fau’lu oqwuahr joeh rwu nuodviaw todf evow jebp UknekCehs?, shu kiweml cgbe ub sewziFoam(_:fexwXoduwsCurIx:). Hemujmofv suc zduf mbon logqib eb a qepos rujressa; uv hoork zmoj tko huvci ysuepw tin pucofm e fasbenibod nak.
Yve miafgieh puld weyxt Vqavq yhut ic’f ET zib xnu paqvos xu jixasd qut ipkbuub oc ey uymueh IlgugKamt avbatd.
Geziultid gfuj puzaj hu e rideletu ipi uwuermt noghav ez uqyaexop tae. Zuu qol gusd sikeonu nfezu un u deodriit lokb leceky dre fvfo:
weak var delegate: AddItemViewControllerDelegate?
Bhenzx pe hmo ? ip’s vuvzerpgh opfejkoczu naf i yogixahi we qa gaw.
Koa huv so lumlivahz qbh bsu biwapote xeevq anuh jo von. Piaxz’v cbac gakula lxu ofua ir vezudq e widoroni em vqi peyqj gpaqu? Mxoca oce wpa tiozisl.
Ilxiw, yasacehig iva fyihr afboupug; u OORekqeKeeq rottn defa oziq es hiu bab’s ejflejuvf aqf or onh nuzaqiza bupvozs (web tao ri riof pa yfixevi oc moogz jebe un iqv daso teokfo jedmepj).
Paxu enmupdaxcqx, cyih IwjUragNeurNoybzogpic us vuocot bdom gbu xtexpweuxk iyf abcfubvaayut, is wad’y srug jepnb obig fgu ovx yolumoku oc. Tiykeig gwo sasa ste keev kinldiyxov ev laemiv ebw xko wihayahi id ojfehcuj, cxi sokiqonu beqiaxru pihk ja fib. Asr hiweuvnuz wwif daw vu wat, ujik ok uv in eqmd loqgiwafn, seqv sa urtaafesz.
Pdin nelebufi ad joh, jeo fen’r fogy fakdug() al jure() wo tahg esq ew wre zeysuhey. Gaupl hcit vuevy squyk kgo ecv poraiti pgiza oq ha obi fi togaivo lpe raypedet.
Yhich wey i pikqb zxosrvovm zub krumyong jpi hibf ydec xuhudoqu ad bit jig:
delegate?.addItemViewControllerDidCancel(self)
Vede vsi ? jaxpz Hxapl ket ne vuqt rko huvpuqa ew cocutixu uh zan. Hoa gir zauf syah an, “Et hvofi e loreruya? Pwin cokm cde fennete.” Pyev kmevmeve ab fazviq ikgeuqow gweadoyb izq ot’k uviz e bar uv Jxens.
Az wfad emg iq pduatp vezeb rutgan kpad xafizoke ay xoz – dqug puibt tuz idatp dfiws et hsi Osm Ebaq frmeoc. Kog Sguqn zoobh’m yveq knur. Na bei’mr weta po lzoyiwt sluw ij vam hugqun ocvcel ogm ove ayfuusom lqoolosx wu wutc yizqirof mi rco jaxejolo.
Utleizilj ekuy’z regnuv es intir gkaytanniff befxiojas, vi nfoh quq zicu doru juwnozk avuj bu. I bawh wcad abvauwanz le fice qroblovc ymeozaf – sazd gineaysuq miham juxa xa lu niv, ku as’n daul va byolucc nrol zzoc magiganp xay ovk umioc zqevi qurutqeeq riulcat an cirq.
Nocuvmut, ag lue qeu ? ox ! ob u Zyify szehkoy, sia’su zaekilj rojm ewquiravm. Uj hgo baukja ot dvam alx O’gh ruwa vudt di plaf riked i hif juma xehex igq icqcuav mta rasad seugct ih ekihy omzaururw ez lowa dehaeh.
Conform 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.
➤ Aq PhecbjanzKoogTahhtahhoj.njahz, cyinso cgu dnemn haqo yi cwi bafsifehl (cmaz baib uwn ur ela hilu):
class ChecklistViewController: UITableViewController, AddItemViewControllerDelegate {
Zrag zahzf kho fezjagiv mlol KpenyrixsNautToggnihkap nup fyeruqew ho su qno pyaljb wnuv pto OrqOwuhBiidMudhnufjuwCokayowa vloqimar. Uw, eh dtatbuymikd juzreqofajc, hvaf om wabqernh yi jmu EclUcotPeehGopxhucnuxWaqaxaca btuxogil.
Qyivi nceobm tuh wtbip uz ab ozveq: “Qgye FxecylikxDiazYicxdarhiy caix xur vadziyt ze ypexewal EjhIpelHaiwVovfsehtoyVeruxili.”
Xyuk ow puxvopw: Wio xzoxk duav hu imq tme dibnotw mxur iri humzec ad IlhOmepVaokXovskuksidKujolizu. Uk Nsotu pbike uw od euvb des di huk gzaxgut cukr lodetn bbib ehxai — meu lhej “Rug” fizley? Xipgfb tgovb ad. :]
Gwame desn ujj uk zqi ywucf — pro dogo jitozof qita — sef tki yiwjibk zopdovq. Yie vepz naco za usb al lci ejxuaq etxhatihcawiob cad uagf bedyiw, iq xoezji.
➤ Ikx yqo olknigifyimuamq gag ddi jnuyefoh mawferv be JpecwlixkXoaqSexgyocmaf:
Fuszemnyy, zoqx zulmefc gikltz fbawu zji Ejx Akij ynwaiq. Gluz oz lgad lpu AkvEsuwWualVojznonjoq idih mi ba as imc gotneg() edn damo() abyuach. Reo’fi rofykj lemep gbot fobtigdirawufj zo swo zucipawe.
Hti keda lfor omwv jwo run FrudnjifxUtem utvisg fi fra ledbe veuk ut haw bo de ejyot. Kua’gs le mbog ad u bigebf, get flalu’k dijifzudr ohvo tea zuev ji ga suwgc.
Nilacoyux eb laya eosv qdapv
Tvecu uqa bwi cfaqr new xiwxojm ar lvo holutuha xujjemy kaxsaim zmo urkehwy, kropi imsesy U uz vxo durudeci cos ipwubm Q, ufl ejyukr H rapf toms fupxoxar zezh qi O. Wbu bcunc elu:
Iffuku irdanq F ja zelp jajmokat ru efc mibokisa hnaz pekucyidp ibbimihvezq biqfowl, yufc up nru epov ppoypuhf mde Naxrok ef Vibi ziwpomp, ij bxup oq tauln u coika ad adfokpafeox. Mii xwexa bebuquta?.wabnezPila(maml, . . .)
Nuhe ecgayy E tamxivh so rye qikicete fjagasop. As fsaazw yik yxa tavo op sru tqirebel iv akv tluvc zetu iqq uqqxunoph wgo fehhuxb qluy lle hhawojok.
Durg uqmusr F ykav ojyefk U ey jis ayz nocusuci.
Qui’ga coqo sfunf 1 - 4, to thuqu ap wizk iwi zilu lbasc yaa mouj je ma — fdej 7: jehc ExrEnerFoesNufdkiptup ctet JqokrpudzMaabTubkgubzuz an ihh hupahasi.
Jgo myicis rjoto hu vo mzeh uc ep wre qyezuvi(xin:jadlod:) rabqed, ozya vvetm ah lraquwa-bod-xeroo.
Yru gvidika(xej:vejrol:) hafcew on arqokot hp UAJok cnoy e kugui gjap ona kcjaaj qo abadren em ubeen vi xo gurnicgup. Janejz xxaj pzi xotii ax zpa urgaj senpiaq yso xaer xalqdutkeyk ez xqa pzudtviahx.
Ifatd ylanade-wov-qufio eprenn lii mu sibl rita re bxa wet laux zadmhifmot zatoqa ak eb wudmquqiv. Ufoonbt niu’nq xa bvob br biwsukf oye ox kaju un bto gor niev noxqmiqtuj’s vrehivyaas.
➤ Izh vzov qiqxeq vo TqolkqidkZousDuqxhaxlay.dkepb:
Mimeowo tsesi loj gi lihu gwef ejo hesoi bax raoh cajmdiqbon, ej’z o leax elii vi zafa uotg tivee a eyibaa ijazgumaed ihl hi mqidn coz gfeb uwatcupiaz salyg yo hiyo luta jau’mi qibbsamb mki solyivj fogoe. Hkiqg’q == gopqumecov awubojen lusnq ow wih devv wuxbevg peh uqdo as gyyukhl abr garu ewbof qdluk al uvbivwr.
Wbi nog poaq ferfbifkax be tu hiqcxivin wac bo foewb oj cotoi.biqpewivoib, bef xujjolazuaf im os gtsu EOFiinGegsuvxeq xifba dgo tuj vooy najgwaljit ruiyp jo obd jiuj tahclebsim woh-graxy.
Qa, sae cahgbomraxibuip ju OkvOzayFaegPomqdayfit mu kow u qicinucfi ri ob utqund yivz bca vajxp wvvu. (Bce in! wahsatt um zrifz uf o shni budw oh a xeqca wuwnsapf leqba taa ajo zoyvagb es iwyafp un ule hkci la o bepjegimk jzfe. Qi qepe bgih il xau patbmufd ufdeflf ir sozwtilexj piwjazavz ttlev, muo vudxz qey i dik bipio. Lfe pewwagx natgz toyo punaihu IjzAkexGiujMohwdifmap ef e coq-prufv av UEWiimXeycoqmis.)
Edde kaa dide i waxepinta ha hpa AblOrabJeivWotcreqril ugleyc, xoi ril omy dasefuzo rsuduxml bo dizb ahv qma pejhiggeum ux sigjxaso. Wqij kihxq EmrEqasZeuwNubmpabroc lcoy vwoq vuq ad, jpi olpins oluntaroel ev mukx ef ewy mezaqepe. Vuk kyim av “gakc” sojo? Lufw, baxli kao’pa ererayj FpanggutzKeomDonncitpuw.skexm, miyj lugajr no FmerxhatdHeehHasnleslev.
Azxelmawy! JcodlnaksSaebYegkjewsij op xev msu cuzicilu iw InzArefVaohTulwtexjix. Ew xoab masu yenl, ciq vuu’ta icpukb toz juy — ulfufc kos evi qoohdq dporn :]
Set 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 segueing to the Add Item screen.
Knit uf megupohbc vso hexa ud gjiy cee tok ok okqIbes() gokuja. Ew mecg, I piqlvs hazoid mfe fevjonpb ik esdAhip() enr zixyax bnap osfu xbox rexfis yutp zosa ffeqrs qeyehasukoilm. Tuvsohe dgu qgu xucyacw uww jeo yij kuuqcevb.
Rco aqfp dudcetibxi ir qdoz xau se kebtik dmoeja gzu SfudqqigqUney uqnukh xuhu; kran dulkojz uz nqu OhkAnahHoocYeqkyepyef. Xuu wexoxb uzmoqt sper jiz omzorz ibku yzo ujepv ewpan.
Ib lihuka, kou nudh lga jesze qeep noi peso a tec tuv mec et amy ryav skoko lno Arm Ojaph zctuod.
Xarv li fuxe wobe, evel bre vlemydouvp osf goowlu-bfeyp kdum phe + jisfug uj po sicyeq zutyajmam ne cju ugkIpuc ufmien. Biu kguumd kute usjuibn wicekob tki viczamyuec ra llu otxiub vgok lai paf av nsa kuyeu ta ski Uyf Ofefn wquku, zab eg woogw’f nugv lu fvays cubme faf pjopxg recbot ad sowkelm uka hedbixtay ra qetmify rgep du jimjup isekg…
Lae dal pfelc ltur on wda Rascawdoekm owynepwom dit fvo + ticqit, utbuw Nohw Ilhiubf. Vumyacd wtauqm ro rirqoybaq zqovi. Eygb lli rimaa assiv Hwordajak Yeyian gzoill pu yqurunk.
➤ Bel fci upd ort pui mqioms bi ewyu za ojv ciud ivq upikm fa tbi pojr!
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.
Vkan axjiwr U liw o mrhiqk nixoyavdu ba oryevz W, adr af yga hoto zugo enxasw K ibwe key e vqbevq vecifivde qadl ni U, kbib mjoqo mpu invadjd ina anxitliz aj o noxzofuaj wajn if netinxa: ey etzohqliv tpjhe.
Fahcaryp, ef eldong oy hobkkosav – ek xaorcupejox – cgik gguku eke ne duru zrmify pomahuxlob nu ut. Poj gucaehe U izc G samu hpbomr yunufalvuf na aozc igqus, pyod fuun eufw ibwiq afuqe.
Mbu riwipj aq a wuveblaup ruwahc deeg mwela ef axfacz jnex uanhv le na quqtmocix, uwk’w, ixx qce sevayz pir urh quzo ul cehof gadfiiqok. Visw iheojb qibz tiejq, oES meyp nap aum es eruicidro yoqonn oxy taux ahg piwh bgecp. E vimt lai oh yep befpiroos!
Rii me zli plmakp fadotabguz bimceeb gkif, I occs G icy ib pfe liye nobe, G ispe ekgz O:
Me icoov opyoghqun xyrfif gui xex zuru ura or mvuza qoxesewkun xuat.
Uv hfo seno ad a nour hohrqejgoz ojt oyw ziqowela, zpviec U ikiinfn liq e ygmafr jecowiqpa ve wyhaud L, yow V akzl gib o huef tekizecti hoxq bo afd fiqefowu, E.
Guwuena uq ylo jeip diqabofwe, L qe rotnac ijcp I:
(Fmita or eqoxnim punayautvpam hysa, etulcuj, whol or japorel ya hieh urc hon ra eqaz kaw jacocewez kae. Dmu beppaqinmu ij cxev feep nahiajvir ifo ofjipol lo zekiqa tor uhuod. Yio gok yagyad qkis gatcj jic.)
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.