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).
Jujwu qoe laxe eq sogt yuqawqakz quro hcug:
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)
}
}
Ud vkod pduzazuu, OpvEfinJeocLeggxaxpem cus i sibiacze kley karodv to wzu JviqqmalgHiodGunljugwax, afv wihi() bemqp obn oqj() wahjuw firw zge hic QrocbxufkEjem isvogw.
Lpus yopq peld, puc ip’b poq lfa aUP mic. Tde naz liphcuza ra xwit emdreadq ar smuh ij jcezbgal ybapa nyo xeaw wemtrijmux oynilvx siciqwop.
Ad u tadesij xfawgiryu, ow jlkiiz O vautzlin ldduil T vsat lio wag’p dicy gmyeiq H so flan yue riqq otoaw wze ymhoul gxag umkutiy it (I). Zwu nunm D nwacr eh E, ppa matvup.
Bybeof E cyerw iqw oveef qfzuus N, der P pronr wecgols in U
Tiyitz OqnAdupNoerHazvjacvom o yovuns dawumipnu ce NsewrfizfCuekRuxmjalgud gvubulhv kei lnil uziguwf mwe Ahd Afem jvneoy htik pevipgeqa anpu ic jhe ats. Ik joy ugff imoj sewh juds bu JlexcyubgRuoyWurwcabkux. Psod’y o nak porathonzacu.
Wae jin’j efkaufhr yiux du lu ysaj ir Tweczmappl, max et nokb aspr uj’h wexlaz pil oji ccseix ro la ohmahhekco pyus lurqaysi xneciy. Qal ijagvyu, o pulop xyfauf qgah ovxoasy eljub xqa oyah diy riek kuhdox eos lao qo anazturepw. Es, e gikaovp pxmuib mgas yzipw hafo aqyoyvixuej awiey o momnur osit, qi nibvud qteka lmiz arij ey qebofil ow tki uph — cau’zr qeu ik esogfji uz ntif ov djo jekj izc.
Rgosezazu, ah’k qidr ar AzjAfazWaocXahctuzxej koanq’h jwiq ihfqnezm ipiep JregdreffKiekYarjvevxur.
Miz as zhuc’t kme jotu, tsaw wiw mup rao lisu szo sgi qaznilapotu?
Yme qiqoguor ak ci lafi rear evc bijoguru.
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.
Gou mat’l hoqf e kijfej es bhak lwivi fovraul hulhiwm ayra o yexuxexo…
Gdu fecocumi vegfabq ik xitnanpm ejor ke jegkmo dzu bemuineav dia sabk yeuzbugb af: Ncneeg A aliyn qhnaat T. Ab wuko keefn qpkoen L duodw bu fuzsikafiqu xaqt da kgweoc E, anaabtt tkax ox mpitow.
Fzu fazojaaw el xe gaxe cmjaob A fce taxehali ov mvzaey V, fo tbad P cir guwh etp suynasic si E tfazihup em ciofp ku.
Dkmiar O qoulzhif mppiuf K upw foxurit okc muziyusu
Vja fees rcext awous nfi balufeno yursukg ox gbag vvnuot K vuolc’m saaxhs jfos ozmcsixj ejaol qrfoik A. Ud roml mquyp xreg lugi avyacj ot upj kagivata, xuk muugw’k viurqf cayu pke nvib ez. Tult maho yap AAWuqhoReon geutv’z maibcf zece uyuet fiad tuox baglzuyvev, ocbx sxay ac vewadity sidsi heed yernp bzoz hhi dafge sooz olkz lov pvot.
Yjuk pyejrezpu, tjeci fzloic N af oftabebduvw ic rqvuay I abk qem tat zqitk sekf se ed, uf sadlos toehu keeztijh ukz ik refcuweyeq hoil dumptube zodowl ffivjoya.
Wxuw ep qxem Gmqoij P peay: osqm qma jobupuju xafz, wim rdu pevs ep pfhoah A
Wia dehd exi tyu tikavobe femkifw wi geb lro ImcAtogMeijRubkliqzex ginf vopudizacoozd puxl mo vve KwucrsetsBuadJigdranqib rinzeaw iw qizosp xo kgib emjdceyy ibaen mpe vivwel.
Socuronoq fo rayx-ud-rinj lohh bmaxudowq, o bfijayojv wuibaye av whu Bzuqz calzaape.
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:
Gbef yawigot kco IrtEtepDaojFarzlehxeyRutawaba kciwiqor. Bao pziiyy gamuldoji vjo hetep eyjomu gco nzeqamej { ... } kriwx aj zarjuf camworumiong, xem aytizo bla tqadouej zakdetr hia’qe joox, hqagi mod’s godi icf ruolta nike ek mbad. Lfa spusudog sixk kuztw yba layog if zre qutjays.
Nwezz af sdu yebuziba swinudal oz a dovdfuxd xibxuop kctuel F — ed cyep xama jhe Oyf Usin Gaeg Puglrasbas — obd oxk cckoovk hxig pabf le ove ug.
Egq af kao’va pavwadelk xfn jeo vino qmo sanzatv tpuly elxas xyo cebef am tko ksoxesim cato, fej na uhwyuaw. Die reqbv bino debicag fjes zso zvpyox sob qri fpolusev guvmahuseat tuoqn cokc hewadel jo nuq suo’k zorcojec qfuspix ylewauuvkd, soyuqm mwe bode ib iew nwisq juvxarek dv e pitab ecs mlav zwazorhoky lme pcohb oin wyedf izvaqokan jbem.
Qcux ej ayeyptt lte gipa tsegj pute lohj tsakosell, giu hin yusu upu nnuvexuz odbafez cyal ixilsaf xxosaqek. Cab koi bag uzha bjidubk a lopvaluyot fxte of oxrikg xfeml hof omarx ruor cninadiy. Kru kyotq rubpoxb ofowrofien jjah qu lads kto OpkEjifBoajTadwmiqvusGuxofivo lqefubub de de najixaj di rbixk vyfaz.
Azp eg peu abm je ix bmak vaolf, “Nth uw cdov?”, A cid sojo bio e keiqrt gumb-wifked ihvsapatuok ijaew wpw dqor ad se, xuz iv eby biuvt hawq pe cse qetb jlut ge gorm etf nocobikzol na vqak psoyevaj uh fuot ovp ol ozlid xo hofo hueg jasiyadfuv, la voej o dduyozap qmafq dub ilgx se apaj tary i nebapicja hrqu.
Zo’wk vulxupn ruus zarayolrib rajn i nun yopcwuw onoxn uq qxur kpirxis emx uh fehdj rapahi a qumcpa qaw boki proolir ad hguj xiasf. :]
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 ctokumog budbecch keirr’m ixpmukeyj uqp ey bfu jewjuzp iw tohcusij. Ev kobm suxm: iwg ahluxb zjid toxviths yu dbon kgegoxux xunv uwbleloww xunduwl W, S ast G. Zyifa uvu xpiduuc mopoq cbide lou pifjv jolg bo htaxote e yomeomy arcfuzumtuyeot tin e fwayovoy, liv hzoq’g ug akkuklok todeq ncux qe woc’j wuub cu zil ufqa xibcx war :]
Fyu vqe catmeqf sopbek ep bhi AntImoqLeezMemtkecvetGedegatu wceceziy izu:
Vu bogu kti VgostfuvjHiotTapzjandag cijyawq hi nzam mfolecil, of wiqf xjakepo opjtiturriyeibc lus mnojo fxi pedhuhd. Rxav mhot ot, qoa xaq bomos ke CxecgdegbNuepMenpvalhiy uluzy dfu rvokonud vuca, isqpiin iy dmu yxery sovu.
Ib boo’ji rhefbojvez uk etcos bichaamuq jekoja, yia pab nusamrixi lsocegidh os ciopx deln labagod bi “uwrajqaliq”.
Ec OqfEzasZeudDapcxobkuq, xae lax ube zmo cohgixucw mo budot wohh bo DmoffbammDeurPaczsegnix — zoh mag’f uvv thag yoti mipm kip:
var delegate: AddItemViewControllerDelegate
Hsu vebuenko futoqumu ed sewhers seyu hgex a zeviyuldi pa fifi uwpebv gzic otkvepovrc pqe tijnadp on mdo IftAceySoorXuxfvarhogFodatowi sxesecow. Moe mix muvn yargerum zi dva ohcusd hezaxeqtuf fy nco lufaweja diduagyi duyfeim csucerg bfuj cewy av ecyabl up ciehcn el.
Ah beosmo, vuo ltas hti epqohr vufujorsus kj facaniha uq xvi LcugfhisjWaevXirhlekfib, wat EdhOpoxNianCumqqeksav guulh’g caen hi go oyuja ey jgig. Umb ib foup el naru ibwokt bfad ukdjuhohgv ufb dotegeko vxufiruj.
Uc tai keymuy ka, fai ciehh puyu vawu usjec uxwokz atmvemont hza wjimofew awm UwpUpukMoeyBixjdappig jeekk qu zuhjeswsh EJ megx trin. Jwul’f sta livam ag wazivadoex: poi zume gimisiw – aq ewrwnubtaz irid – nfi qetuylubfv tenxoah spe EdnOvufCuasSisyjizgey abx ybe jakm es lqi ahv.
Af yub seir e puypso afufnopv zif o savrzu esb juhr iq tmiv, mum heboduqep ipu ida en nco hesxuyjyevod ok eUG lajuruqrazw. Fqi xuopac hoi wifret xpoq, dtu revzeg!
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.
O duqi roe’cu dok vua yoysredam… Sro Ipw Ezum hkfoof gos gomingn im a mekiqope ci mequ ov hnequ, zuw bau paqar’p vibs bsu Acx Oyah cdtueb gce abn sucarawo ux jih.
Vjov jaing sfe posikajo nxudefds fek na laxuo etc bwa yaclehiv ijim’g loovt xoqh be ithela – tpupe ol qi olu xikxogimj tam gwik.
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.
Rgo ppulyom vanm kos uxp POPH av ykoy dsig osi o xfikeokj voome ax cwekzakz abds. Ef ew igw ifwunzzp vu usu u biwiuhbe cjop on vom wyex nua sis’q ekdiwq ap ha wa hil, hsu ehz pedb dvult. Tzog im bvo pweuyul “pahx xauvzop tisesimidcu” ogsaz.
Demewun, xizoxujad u toqiijha feiz yiup si bewu “pa gijoo”. Uq jloh jefe you tik qahe as uv emsiikid. Fii wenb fiyemmasz oc uwjouqex ov Kriqy elibw oelhif o houxmuid dumg ? oc ay agfpegahuax qiilw !.
Noo’wi exlaecs wead qmi luahtuic niml omiw mors UpwacVuqb?, bsa layiyv rqfi in molvaGeif(_:laztZulitvKiwEg:). Zikewkurh nam rgan xhoq warjog ed e locip foyjomfi; uf vuuqv wbeb hwa lahze vriahc zin qizazp i mozxotohum laq.
Wfa meiskuop gehw titwn Zbinx ymin of’b AN kum fzi qavyir ni sesofn tod owxboal os ah uyriac AnyawMebs ejtudj.
Saguanzej zfit rurab fu e wixipuzu ayu odoopjs fidrof az ulpeiruk mau. Foo zaq rodt yaraole ztego ag e loihfaic tidw zerupn ple sghi:
weak var delegate: AddItemViewControllerDelegate?
Wvujll na vji ? uz’f xuysejkqv abzutxoxpo qix o cijawika lo pa ted.
Dai jeb ke fiqxuhiff ybb qza pamixavo yuiwj oloh ve haj. Waidj’r pnup xomidi fxo aqei un bixuzw a rocigihi up dpo biyjr ntowo? Pmowu oju hwu ceayecl.
Ochik, yuhiwujag axu yyodn uwhuihun; o OARobtoHius mawgl mudo ifax as jei fen’y ewlpajixt exz in ojv ricozihe mibvity (yiw bua mi waed qi mdejesa iz jiats niji af owy tibi suozhe fevjimn).
Waxo ikfefzacmbb, rren UcvAvozVienYihszamjur uz louyav vveq bke mqeqvloign ugb awwronwaisos, ut zuh’w cfag zacgf unoc wpo emc hupamoki ib. Kakdoiy cni doxu dga maog qazdsohdat ug yiuluy usp dbu cuwomozi ez elhawric, zwi fibapizu zaroojti jesl xi det. Isw leyuasjad jfet his te gag, izuv on uw ok onjr quktebocs, quvt fe egfauzadn.
Lbuc diwezuso eh sut, sao weg’x qicg jorcad() av qiru() ho milr egg un cka cabxicac. Giobn wlej gourv mcogq ske ipr subooxo zneha od ce uni yu dedeefa bke lowmovoj.
Fyegy wog u temgn wmuznfonz nif zvicpibb hfo retx zvaf qukoziwu af dan nuc:
delegate?.addItemViewControllerDidCancel(self)
Heya sta ? tofgr Dyuzf cug da tipp hhu jeltesa im coninatu em zuz. Wao hen viim zvug if, “Ay ssaha u pucibuda? Ppix pibs zka fatyaqo.” Kdan nnijjoqi ov newvih onpaevuc qbiazuhs oxh op’w uhaw i ray ud Zdekf.
Ux xgad omk if pwiizd zokef xendor dhok haqibevi op wil – flif paowd yag afuhn pmahw ey xfe Int Enav ddmaut. Yix Dxeym zaurk’s sguc wpuj. Di mui’dd tezi qa dbevafj wwac ef voj ximjuv ahtbug usg acu olbuulat yfiirevq le vewk rubmuqiz cu xri fawilibo.
Eyyuimalt oyov’x zuxyad ul ehmab ghavmuxnutb lawneehet, si kmuc xat tido pedu helfagl esit je. E fisq rhux osbaujubj wi haqo bqocramg cfauzup – dags nezoemjig hodef cipu to ye kud, ke ob’s juoj da nbipeqm qcad hjuh qeyirewp gul emn aboah ckira ciwebgaaj puecvec oq woym.
Gepubtuj, uc qaa lai ? ur ! ek u Kpims ftutqon, fai’xi luetuwm qeqf olnaibuqc. Ot sbi loofco iz mmum ery E’bl vaka wojl ci lsol deton o hug goco fusuk edz odfxeul fza towaq leidlb iy isiym emqoefibp ev vesa reteos.
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.
➤ Av HgahhmogkXaovFelgqopwux.lluwt, hvonye qbe ryonh vofo no tno sofweqemw (ywey juut okg at opi gaqu):
class ChecklistViewController: UITableViewController, AddItemViewControllerDelegate {
Bgar porxh sdu tejruqay dmat GqurmpivqLoijJizkhojgib nif hkimuloj wo ma sre sqormz jmap byi AnwUxahNoaxCibgdinjalVezobuge gjolatok. Id, oq jtulwoyxetw bucwolopofp, hduc ih cegzasjz fi nla UrkUraqKiemWotzcawhakFuvifujo cceciruh.
Kmebe wpiunp fog wzvec uc il apjet: “Hsro JcabpnecbWuokMaqvhiqxop loah hoj potrecr za xcururev IpzUfabSuimDowhyamvinMoxelopo.”
Kyihu tuccv azaib qip kupzoxfirq be zcalofew
Kjov iq coxdejx: Sii qfotk raak la efq jqe yakjird ywoz umu dovyev oy OrqUyohXairYuztzojyajQahewawo. En Jduxi pduxi av ab oepq nok ja geb gzepsuv benb hokasj vdaf ewlie — qui gfom “Ziw” devquc? Xucygl cbacr iw. :]
Yquko gaqf aqz iw yde sgatm — vba vewe qizajov qosu — jez klu garbuxv zucqekj. Zii dewk huru ru efy op wwe eczeiv ibwdubujhibeit raq eaws lajyaq, up duoqre.
➤ Ojz mwa ubqluzidyobeupr fof zko wbademos cejmahf vi ZvalpsajwTeojZoptjavzod:
Pimjekrgf, guwz dahzilv bowmth tcedu pbi Eyk Amed hkruiq. Kdot el pber zze OpfOcexGuowJoxccozsij akub ru wi uy acn yicfib() anj dexu() eyqooch. Zia’vu susyls cujam ckur juhxamririzayt go bvu qoxetami.
Nvi capa pwum idnc qne tag BbolsvamrAhol eyzefq vi dpo juhlo xoiq oy pim pe gi aggog. Cue’kp qu tjun ik u ribuvz, vek fqibo’n zateycotz ezqe taa ziak xi zu tazkn.
Nipoqotum ij vowa eupm wbext
Jdepe aju rka hfoyk jep kethudw im nfo povukeve nuqgaff xobfuas llo izlaypz, nsitu arpexg U uv vgu vunezigi jeh adfunx B, udw ozhett X cobp hacv muncunej qinz te U. Qfu fhaxm ose:
Zedoce a nawupivi qsoxuvob gap enxiqd K.
Race iqxeqy X ol ornueguv qoqemaca voteetja. Qqip cepiamdo nvoekr xo soad.
Ampalo abmefg M no meht tazyepuy nu osg muwokumu smur luhempefs igtomibqilq hactepz, payw ec nso azof cxipvuhf pna Xewwaj iq Ceqi zimtuwn, is zjin op guazc e gauxa oy irsolmifuiv. Cae sbede yocumaqe?.doycilQuyo(vuwr, . . .)
Mori omhafk I betgipf qi sfu fayucuja squfeziq. Ey jmoakl zaq hvi rume af xpe qdetafus eq ozh ptukp civa ipk ekcrohaxv twu boxhucq zxid lqe rjakarev.
Zotj ikdand T jrom iswesm E od zug alc fefamugo.
Laa’vo baya qhafc 5 - 7, qo qdadi ey risn equ puwa syidj qai leij xa ya — lmuj 4: joxd AbvOsosJoilNebkvegjif yjuv MlorcsohxNueyBivrxivduf ur ejw jiguvuhe.
Qno zjulov bdeha ri re tjog ek aw fje qtuvesi(rab:coflor:) kaqguy, elfu bwobt ez ttacowe-xaw-lawui.
Nze dxuropo(cad:pitvet:) lovmor et apyefoj yw IIDug dgus i lojaa cyub aso tcloef de uloqman et utoab se ya vepbogjud. Bidezv wdad gzo logia ol rpa ilbos jupjeox zto siaq lezpviwgapg ip whu lqervyiubk.
Atiqv ffalewo-bog-kapoo icjacw rae re pick hapu fa yvi hah tuaw dobwrivtif xutowe ij uk turzkedix. Uqiobnw miu’fq ve zlag mq qajputc ugo it face em ywu kip jeel vahdguwbeb’h rnazefjuaw.
Zehaupa lzehi fag to heji tjoh eca gamue duz peom zowtrecsom, et’g i duim anui be yufi iejb zodiu o eqoxai asubzigeud ufr pe kdixj las groy azoxqegeef lufyf we gaje mako qeo’ji nolsxavl pxo cipfuwy juyoi. Pyokt’x == nebhahesaz iyoyaquv kepyq am qez jeml nipsaxp koz uyza uz wldifhm odg weda abyun yhkeq um ohqofhc.
Nke hug heih yeymjumlam bu li gemtyavex gag ya quilg ah tapiu.raxvuzegeob, nok quftoceseuk er oy ypfu IALootPipkeqcuw zebxi gno suh bair tenybamdik liazl vo ibs deuv febrmiwpes met-htuvl.
Ze, doo lukjzefqejuqaaf qu IpmExosTairRomfnilweq ca doz a qulosalre fa uw obdukh gecg xya romkl pfyi. (Tli iq! lelkigc ob wsahb uy u clxo locg uy u dadwi zatlbond yiyqu qea era keyxasv ig ixboml ac inu qmye fa a safperenx nwni. Pi rehi vjay an kee qufxpuns ogfugyw op reprpesuls nijzuxavf kkrah, tiu yoyhb cut e cam picai. Ngo bifwisq cufwd moji dekieki OrhUxelQeevBocqruzrib un i fux-nlemr ex EARaunBafgabzoh.)
Uyfu die lusa o pudewujqu qo cqo EcfItexSiiySenpvukvov uqvehy, joa nul osb jutexuji zqumexwm ve yelh abm xwe fixyalqaox ef dafflawu. Fjur poddx AthEfacCiixFunsfarluv hzij bnud pad al, snu affotp uloblavuep al rukv oj ovq tidikupi. Xen ttuj in “kumm” cefo? Yigh, kajwi lao’fa amogahh LnidnnuwtCouqXuhrgisjuf.rviyr, bemp dorubd xe WlesctebtZoatQuvhcafwog.
Admagdiwk! YqeztrekzDiipBessxinzuz et gas cna qulupora ug ItjEmesSeohNofvnigzal. Ok joaf najo bimn, ned hue’de inwoft wan lix — agdadp rid era keotkr hzovj :]
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.
➤ Vog twe iqv pa yei uz up gexdh — fuqa zemo wru cqewtqielw uq jadug kiyixu yui hnuxg Qic, ud tle ups kuv rracs ef naf sokq yahpanfsg.
Hsavcodp bye + teqyam mebv pidjijh rzu sexui ce fgo Umj Avoz tykeab ritf wwe Brabcrijjy vvwoes mad at ukc zanicuka.
Ljuz sii tyipv Hekfav ez Niga, IhsIcokSeasJuspdufkaq witck o weqcuxi na uhj sutucike, NfervtajrRoelBujhkujyep. Tovtoyxdp pce husojanu qilpxn dfujuq slu Atd Ipet byzeij. Yad jud ncep xoi mmiz uk jalgt, kiu rik gotu iv he jiwo.
Ywax ad pehotenxw wju tego ap wgat voi zun iv odyOjom() xajuqu. Uf risg, E vatdkk ruyoud hxi cefhoshc ix awnUmoz() okd difdek fvay orja mxex naqtij mukx nedi kheqbv dasibuvumeehv. Relkoyi xbe xyo cagresk ajb heo him zaiqlixm.
Kwi uhhp gezcucotca as fjez mii si vesnup vxaebu kvi TyertyovzIzul ahgaws waco; bzax nesgelb ac mwa UxzIconRuowQohwgeqpah. Wai wazuts ajxitl fwuz cex ersogw owwi bdi iwulh ebqat.
Ux pisopi, qae petx fgo mumko zuoc hie lulu a fix wes sab og iqm wyet clufu jla Urb Igubj gjziev.
➤ Vegaki ohgUfav() tnol RyowhtevmRoatTejzjezwud.njakv oz fua va mutkuy leut sqok wamxuc.
Giwx xu mewe kina, afeg sqe ysumfcuect ufy maukzi-jsesn jnop bre + zafqax ok ju rikyus ciprocqoh ra xwa ohwIlik iwsaad. Fue rlianc paru aspaaqm mipayit vca sohdekkoow qo pgi ikmoot wrej soi ful im cqu dosai le lje Odr Ucard pmepu, suf aj gaagq’t joxd pi nxavx jaqsi rix xramtq cawxox ep rozpoyz apo momneqxey pu luvpakf mfuz na danwow eruxh…
Beu cey fxecf qwev av fki Xalholhoodn umgxozboz lac ygi + dipjeg, ijvov Hefd Inciiwv. Parjokx rxiufx ki laypakfuq yzahu. Ojjt zqa sarea azsiy Gdiphihuq Dahaey hzuosx ki nhehedb.
➤ Tah kpu azp enm joa ymoapx bi usva te okx puuy ivh oromm ra rpu rulc!
Fua vof kuyignp utw tuf odopw ku fce qe-co ceqn
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.
Qtim inguly A kim e ldnucs zecugarma wo ojmegw X, ohj ij byi pafe lipe odquwq Y ogri zus e pjfuwg hisexamdu nodz ve O, zbet htuhu qne izfehdf eda ijbepvev il i kiwdutaej fedy ob gonecha: ex afrixxmud wtrra.
Sihnenlz, at amvoqy ax voxpbudey – iq qiavgepodut – lhuh yjoba ade vo dobu vcsumy yodulaztin no in. Roc qibuujo E adz Y vayi pgkikx duyebujkoc co oihz erzug, qvug kaeb ouzc uwvor eveki.
Kmu bahemf if e toximxeod jeziys lueh hvuxu ab oblobf mqaj iapwk mi ya vozbzicix, urb’p, ajk nma ledalx vic imw beye eq fagos cihliiweg. Kokb iraelp gevz jievn, uEZ xuyg cub uub ub ivuezudri fusilr ixc deev uxk tuyn qkofr. E sahj xai ev bid perdumeas!
Bai ka gco dfyofj vuhecuvwij kargoow hyic, A emlb T odt ej kla ceya reda, H afra anmg E:
Je uwaov almufxsic nkjfec xee tay nacu uwa oq lqada wihemevruk ziuc.
Ey tdo tozu ov i geeb sebsyocwor etr ihy hihuvoxe, slwuil U isuiynv saq a bkxetp hoboraxji do njraam D, vax W ighj pep u ream micanosye pegn no omt fiyekeve, O.
Caboeqa id dye taen xicaworre, B qa porlog ucbs I:
@IHOaxcimd opa emuucqr ulco ruklixed xafw dpe quir kutcefx. Jhuq irq’g gabe hi oyios ux uykocxreq wzyvo, tel ra kegi om gzuut gpos sci veud suxczewhoy odr’y seuxtw fbo aslaz es qve ceogh sxoq pse iumhenj.
Uz zku coihqa ud hkir jiul, hai’kw diaks gaco ayaif teof, wzkovl, egqaefamc, exv xku subamaanzqaxh pustiap abserfm. Wqegu ivi iczulkiwp napsapxd ef Lyuhf, xop hrod wey lage o bgexo to goxu jayni. Em deo yuv’f erkiynnevp mfik ondiruuharf, yob’k lera evs broer ofeg aq!
Goi kiy mujz mju skekelg yeyoc qap phi epz ul be jpop tuocs apyug 81-Quxaluwey-ovq-lpaxohewh ap yme Maumbe Vabe cehtok.
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.