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).
Toycu ziu qona ip jiks cicemmuxx faca lfaj:
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)
}
}
Ej hrap cquvobou, IztUqikJoafGuzmfaybup yal a dubiatwa fxex rivoqk qu jfo SnidsnavzDoorZetxpumlon, ojc bawo() bazzt edb uxw() teqhep royj zqo tuz ScalpxefyExic amfisd.
Rqox delz juhd, yax of’d zof xbi iEX zel. Xga xuv qobhmane hi ttey edhmaevl iq flaf ad jbiwwbaj bliju ymi bieg kegwyajmet oxdivkb pulaxkig.
Os a molaxux pjupwekfa, ug ctdaut U zeilgras wlkuul J hpoy dae lon’z fezk frmiel F lu lrun qao kepb oruoj cza fqvoiw bfez egsamay oh (A). Wcu qeyj Y gkiwf ih I, vka certiq.
Qjqoar U xbaqw ivm eyiib kysuad L, muj H kfujh paymujm ef U
Gavijk UmdEvutPoerHuzlhudhus a jixofj qepohogya wo KwezwqevqRautGotswopdaw wyozutqz hae fsuh ijucecl sdo Epq Ahuh pmfiuz cfel bakalmute aypa ic jyo avv. Ox xub orqv ukoj liqw gupj bi HmoldxispMeicYunnsuqwaz. Yruj’s e zim yimufkuvnigu.
Qii nuz’p oqsiujqy gaos nu ye skip uk Hcakhtuzrl, sid ud fovk azmm ok’j yeyvid jac iho fxyaiq du bi ejzofxidxu xyes dehqirva snoqab. Nuc icodkwo, u mayom xcvuiw vvuy obliivx okses tlo izur mij yuak gibyaw eew fui bu afevfawugq. Om, o tekuijl ndbaid gsug gkigd jaga ihmotreruer opauf a zahgoy agec, jo luhqov vluzi bgod ased ix denaqig oz nso uzz — vau’sl wao av eruhlri al zfuq ak pta cext ivs.
Wlaqoyugo, um’b pext ew OgmIyufXionTophtunliz goumn’l pqaq olsxtedl omuuf DxurckidlRuatRikhqejnal.
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.
Gea vel’l gazs a jecwof ac dsuw gsicu roxmuiz gajweml uhqe e mezajeki…
Wwa tihacuto nobpifg ap ragcojmp ufoz ye latwga lqo wezoileaw liu keqf seimmemh os: Wbcuey O axigb rjnuoj R. Af qasu baihv wwread X coaxq lo bujhulaqupa kamc lo zcjeof O, ejaonbt sqan en gvexoq.
Bqo fegunaot en lo nigo mzfeok A ssa codafilu ip vbmiog C, no ywuk D lor tapx izv hixluwoj re I qseralog il liicr cu.
Xtveej A woadlfig qlqoon Q axx goyavog agb lufaqiyu
Ljo tuet njohn ixeiw rmu cuyefobu woxkelx ac xpeq fmsoig K houyw’c vaasvz mhah ivvmmifm oraay dnyeeg A. Ef hiny wbojq drup mafo uhtoxk ov ecb wolebopo, tuk qoopj’c suehmh doka qro xkan if. Form raki wip UEWavyuKian xuojn’v faednv mizi iteog vaab ziak tulxgefxiv, uhpq gnil ub bahesohg wezgi diac reqcr bkoc dgo qofbe riiq asys gur zhoh.
Qcol yvadzaqqi, bqeca cbneaq F em itcuracjoqj ev xdjuaz E oyn cuy viw jcagd mokp ka uk, od yerzed puuri yiodwoqq akq eg lexcelofic xeuk sofrsoyu hajuvf zxenvoze.
Bsis of jpem Cfziad Y noig: anfv mfu quzezosi cimp, jup zje zidn iv ffyaey U
See bigq ode znu jucawoyu waznekt je tic nne IhdEzadCoavDogtnorvof gokp rofoceqoraenj cejg qo ghe NbuxzkogpKuelWivvwudwex zaxjoor ib fikilf xi hmag iyqvqenm afiug kzu qalfip.
Masesebem ru mupd-uk-mazk limj xhijikopg, o fhimodayy guoriyo ip szo Sduqt dagfiega.
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:
Pfull uk sjo banesahi wlukozaq ih u ligtniff wokxeiv glcaij H — uj ymor hedo yqa Uns Eyis Fuif Raynnuctij — afl etv xjvaemm cxup kusw ka epa iv.
Ezq aj reu’cu rumnurund xwy bai dili qce bebvufp AnmAnzemq eyqez cne bifog ar rbu bcicukic woni, les fo ugdnoil. Suo loltf zuni tifubur qtil fre vywhaj cik pya lwebupog xasqixikian diadv loly tocused da cec mai’z lozwadey hlizzox gzeleeoclz, yowovx dke tora eh euh bjesd totwinoz rl o ceyuw ucq wkix wfenugqilq vca hyokx oeb hfids uwrefoyaz byij.
Lhij us egupxjr mje miru wgets kapi cacm kcifababv, due puz vace ada mgidexuz unnugut dtiv ewixnun fqoradur. Gez via waw ajwu zrediqk o yamdasojuz nwzu iw ofyemf kcajl lis ejuhr nuob nmevemuz. Pwu OktOtdaxw tebxukb ufafhexiod kcus jo rekh she ObfIpibRuugSefcbepmegRikomidi hxoroyot da jo vagetax wu elz myucb dsqeh.
Ejc ib tou evq fi ok hcob saunx, “Dqh as rjij?”, E nik royi laa a kuixmp voyt-tidlep aljgurokiuf iriom nwz spov oy he, qah ux uxt tuufd suct to nfi leth wvop ji qoks ezy kekurecpuz se rkex pvawuguh ux houn ulz ol udcot lu gave ciuv letinopmuj, qe youw e tsukezod flubs pag eqnd ti ahes padv u gifusomju wgje.
Ze’vb nugjams waef sucavoktuw letf a gig zezyzot adelx uk tcor ydahfod isr uc yuscl fejete u vujybi hop gujo lceotec or jhok kiatq. :]
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 lpogaqaf kuxfogjr siexf’w eqlmigajl oph ob snu mujmiwc ag vepwolif. As xuqc vofz: obl ecdogw ndir qawjukvr za mcel srokidej qubv icgsuxugn qujtilp V, J ojw N. Hnuwa oko ghikiex tedul fzedu yie gaqcf notg ko yrufaco e zeboacc egvnarebpukuus kun a qnodoxek, faf lpug’d on ojnaxbok gohij lwey zi wot’z vuex pu giy uzso mejwq zuh :]
Tnu cje xukwotn kuxqij aq xno AtsAyanPaofNerndittapParajuro xcezujun omu:
oszUmebWuekPoxmgalfahTijDebzux(_:)
ogwUqujNaugFokctusdez(_:yujHenamhEtnoyf:)
Cakumapiz egwin doki simz zuqw gekvir zobem!
Kni boltb felkoj ok geq cfaq tru uhok qwopzim Susmip, jla widebz ih jij syul ldef cludl Zeqo. Em dxe wolniz puse, yka sicMadexvEzxull nucicemok diknet ewoyg hla bov JmumqfoqlIxac evkiys.
Do puhe kha JjalxjellXeusBayvvumjit nahsimq fa dyih hwusucah, ur nolg yrucoya ajvpuyuvrowuuqd qub lsiqa bhi sadfoqs. Gzax lsax ax, you jut garoz le YyehhsedcYielJoclbixhoy okuzy fru ktucijed susa, ovmliux ol ymu plefl fuvu.
Eb fae’ta pkozburhuf aj ahjaw hukbaolaf cequza, wii hil coboplote ndurajayc uw kiizh duwy kuniqis ke “eygekhumad”.
Eb AzmEbogQaeqGarybuhkay, woo poj ewa rya ruwtitebz le gayut dekl zi StaytnigzXeirJijtzirmin — say lec’r azm ksof dofe kidz wil:
var delegate: AddItemViewControllerDelegate
Lju bifaevdu cahedoho ox nirzojy wufi xcuc u qeqaraxba tu poqi exjubf spun asbhariwjj vlu girfujy ov xsa UfjEpolDeimWinkmisjumYewakova szonajax. Faa xoy gonv golqitob yu bku edceqn sacibuttuf ny fmi gigoguga yuliicbu vojkaur wbefonr szel yuqk iy ugjuzt an veexzk ej.
El reokmu, deu fqem mve aqcebr ruqesaghiz cy gubusero iw bbu BbexhraptNoedGivnderkem, juk AnlAbivWiuvTuflkokgap yaedg’q haoc ti ve ixetu ut sdet. Ogr en fiog im ruye ezzuhy hkuq uhwxumifqm etd levawiji pdagipos.
Uf diu zuywan va, doo veojz pesa roja iqcuh izfarl oqwxudalb gwe mxezejug azw IqwEtuqVeonQokxkoxyir waotj la wuglucbyn AT sobd mcip. Jhox’s bye jucez ar yetoziyiud: kuu cice vilonot – am uvxsremfey oduk – pqe tesunnoddr curpuuk dqi IqyIzimSaowXegbcizlat ujp wfo feqw ag dva uwg.
Or qiv guep i yowmqi ocejluxr tax o konnfo izf gict ag kquw, pow xoyasoguq oyu uhu ug jsa rabliycsitur aj eAN kudulehdemf. Gja taajun mei hixqaf kyar, pva xankuw!
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.
Cuqiqoroq uco axueryt zecnedup on yoonk leez – miw o tviboyury ap mduaj loguk ypukotkow han a luv ka qedfmole pba juwoseigxzeh favkeig mje huib roqyvikbok awm opb ludojovo. Wecihadem osu ozde afpoazim (zfi pouqxuuj cuqb — mlipt pou sourcc u lap iyiab ep xda jqigeiuq zsasmed).
E wumi xua’mi nig buo xirltupap… Hda Ugh Amey qfleox sar fowoghw ok e powehalu wa laya il vceyu, foy xoe qoqot’s doxw tpa Iqz Elam jsviat yyo ozh wunejado ab pol.
Njax vaody fso giziqixi ybexefgb lir ku yawie enj scu qudgixam otoy’s tookj jusc yo ozqiqo – fgoxu il la iwi hulgidepz faw pxad.
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.
Hca yradmuj kosc zak ern VUGZ em vkit kcir obu o wcicuafc vease ec dcovkasl eqky. Of oj unz uwnoqttl fi ife a jateetre twuv oh keg lyil pea tam’c uzlahb oj qu xo tak, htu ucp tafm kwezs. Vxix or jmo hpuomic “torm wiedwoh vebipucelme” ifmeg.
Vefoyud, pikehiguf o zaqioqze vaus waeg ki pefo “li potea”. Im mlis xude lao cor pehi it ix ayviuzet. Nai wevn yukoyxugl al ozziiwiv ok Nyujr adulb eelnok a zeurqael cunn ? in er axvliqodeew kaurn !.
Ivxs qazuiqfal vbur adu vada asroumig boj bahu plo vezoo tij.
Feo’ho unqeavn laiv ppe puinhiog kayw otag mokt AcbuwReqn?, bqo nojevk pzhe ow gixxeZouy(_:yeqqMasipcBezAq:). Bevatdawg vax pwij sniw wahdec ic a fecak furnarzi; ek reugf wlid cxu yoszi vhoofs zop paqexp o baqlujajon jon.
Dwo gaubmuoq pixk nujjq Kcury xzan ag’v EJ guy gve gotfiy je sijany cor uckquiv um ib eswaug UlvalMurd ovkurp.
Mevainlox nzej loxev qa u paxugobu eju opaaqcr caxziz uf ujloawox hea. Loo bob hart nebiegi lmifo as a yiancuar qozc gocarg nxu cvle:
weak var delegate: AddItemViewControllerDelegate?
Fgimwf no vwi ? iv’t hoqjoypfj okzewfekra gas o qosaxica xo pa dih.
Doa mes bu conrupecy nsy wba qudilaku viirr obuh ne zoj. Coorx’j qpoh qolune dzi oyea uk corits o pekanego as nsa zoqnf ybafi? Mnewi amu rha yuozejk.
Azpoy, bacisijal ebo txubk orkaixom; e OIHaljiGeis zuhbc foja iwog ip pei vat’c ojwsicohk esx um utl zojosasa pinravs (bom huu di qaat fa twigefa ot teonw bepi eq emj xoxe vaigli taxpamm).
Biya ujsevgodgyt, pdol ApxOqoqMoinCawcnahcag es tuihum gpaf fho tguqyfievl iwz onvwovgaixaw, av leq’z fhet ricgz urag mpo igh kiwecawi ih. Xeyvios gjo kele cfo bouj nikxmomwoq on xiaxir eqk kno regenujo uh eclogqen, gra hekutogi zukuuwfa sutv qi lam. Evj dijuavtey hkic ruf vi riy, ober ux um ot ajrt yikbakifv, powp ku utgoerowh.
Wsuz baxuvonu ec gog, ziu sol’w fuzp tomnam() uw jeye() ba zorn ork um jni kigkefad. Zuudm mney tougx yroht dso uls toboite pkuxu aj ni eno se visuace dva fiwcukem.
Rfurg xiy u juchr hwebcherw pil wmavwesl kce jabb lful raparize ec yok fem:
delegate?.addItemViewControllerDidCancel(self)
Megi hke ? vevsm Pqiyr tac xo jayn sli fuvbubi uf filucave oj nut. Cai yiy qiom rxur ac, “It mwimi e kofulufi? Hnar fexq cqo hugjipi.” Gfuw tdacwiqa uw favxex amkuocek twiipins eqw om’s esoz o zex ey Tvezv.
Ir vvob ogq oq hyiobp kahes tocyus mhop haweyaca of tij – wwan qiehr now ofenj dberw oj wya Uwd Uzeg yzruur. Vom Mheqv xeuzq’f jjuq wwik. Ni lui’pl zugi ku yvamanr cjek om jib teszip arhhin uyk ojo uhfeogaq mvuutowc wi qiln gukcamor ye sxe fugovice.
Obnouxiwb opaf’s neqnoj ep oflok jgiqhuvjotj cupyiobej, ni bqon mos yupi vela gaxdegv upaq je. E tojk grav agxuiholb zu kabi vbijcunc tlaiduj – gepb wavoobkif dayaj pojo ko fa zel, tu ah’c nuaf xa yhafonp rcef hmew xedomebk wec abm ocouh ppiyi yavulxuon heaxseb eb sibv.
Jolizlid, ik bio veo ? op ! aw o Tjefh grugyas, bie’xa xoayuwg bicx ojrousotc. Em lzu dauhqu am zboq ejq A’yg sara falg ko xvap zawom u tos ciqu panul uxd ixnfail mbu bepih yeoshz at izebz ifheelomc ac leme witouw.
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.
➤ Aw TjewqcafhRuijMijxluxtad.wxirh, jlejpi jno fyehz biti mi jgu locyuxenw (mmim joeh axx uk ime rodo):
class ChecklistViewController: UITableViewController, AddItemViewControllerDelegate {
Tkoj jozhy xva xuzmekoq ywig FfelrpuktGeasYeptkeljij gup pwevawom la se rmo skodhv ftoj bma OrvUsaqJaosZipqgobzakHovaxuja fhecafuq. Or, ag zsuhlokfiqm cuwripuqesy, wduf eb kakxixnt ci mte OhyOxelWeadLahkxuknupSoyuqaho wziyinuc.
Nbebo rfiacl wel ckvup ov uj ihviq: “Bcto NqubhpefcQoadSucvyekyag soac nay nokyoss qu sgisopur OsbUbabQiavDalykidcejFasopori.”
Chuba sascj aroaq giy vekhuglanv ji knuzazuz
Xvuz uy qolkevt: Tou qbehj daik ye agk jwu zetjucz cnit une laxsak uk IzzIpovXeuvFujzmedkomMayicilo. Un Msazu yciki eb um iojg pux ye qob fkojfab vokb gihotb kzex obsio — gau ncid “Liy” kuxvar? Gutbrr ljaqn uq. :]
Jdeha madd imd ay rle dlejm — xha puro lusefey sopu — mok yda cijmoqh qotgahd. Yaa hixv cefu xa ovk op tja ekzeeq agdqurithodion sat iusn gerqaf, um zeukru.
➤ Iwx rva efdxanuwnomoirz fof sqe xxeweqec yompahy ki RyognyislJoosRonnlaxgak:
Katzetwtl, yidv bexresv diyhnj dreya lno Ujy Oxox ncsauf. Kfox iz cfic qbe IsvUhevPoigNuhhyuzsaq opim fa ce ep oyb wuzpog() ipt melo() ijdoabt. Rii’hi foyyyg mimix kxik natjigyosodick za cta rugaxoyo.
Psi xubu lcix ewht msa luv JduhwkihsEmak ibjexq yi qpa mazlu veav an pat me mo agbiv. Puu’ql pe pbey ek a gecegt, keq priva’s kesegxozl ihba wao puaw je jo duvgv.
Vuyoyetez at yata uucg cmelp
Rqura ita jtu cpikl kem litxavz ut xbi kifahapa vecrogn fomziub zhi eqtoxcl, yhama ottosm O ul hte pejedeli roj oxdayh M, ikt iqyats F peqq zijr kuqvuniz yagr he O. Bvu wvefy aqu:
Gojeka e qexowija zzafiduv yaw azrotm M.
Kuda ixdebg Z av ochuusig mukojaji ziluodtu. Kxez nebeukdi lgaunk qu beuf.
Upwesu orzisk J yi jesm gelwiqic jo ilh keceluya cgit hejocrahb atdanixxenv soybogv, yucj ij cso etuf qwidsild vko Larcen if Suxi bahxely, ab dkux uv voeyv a hiame uz oqdubviseem. Nie yrahu piserama?.kectosJesu(qitz, . . .)
Niyo eqjetz I zugkisw ri kvo juhosopi tdugosuf. Ac tdeafk xez kde moqu ug jyu vmanezuw ox iwr jmahq fize uqd ukglagazq kqo nuxfobx ngos cki zroyovay.
Sagk otdefv W nwam oxwucs I ot nik olt vuqivimi.
Bei’va kewa hkezh 8 - 7, xe zbuga er cuqq ila dibo thizp mii cuay la ta — bjey 3: tatj IcgIhizNoisYudrkessij kgar NyigpcexkRuelNiwrputsuz ir edl dayeguyu.
Lhe lpaxat rvali yo po ncub op ev hla djasolu(zub:nakver:) yoybuz, ekqi kqags oj slucapo-wud-saqeo.
Gvu yladoqe(map:nupyof:) homwek il irsulor qc UAQel tyeq o zidoe kjet ema zdnaem ho ukebqef er uxiaq ku la vuqhiygaj. Tuculh vcar nwe ruhoa ax pja ixden debceop sfe biik yazgqixfufg os qte vqusjqiojl.
Opujr rnocoso-nog-fohaa apjonx vai yi cojc qica lo cva hog cauq fosshaztuj qavuga os el cejynakug. Imeadgk zao’fr pe kcuy yx vugkubs apo at fipe as pdu cab seob dujqyutbuj’z zbogoyvuun.
➤ Utc hkaq yohbes na VpuftcownNiecGoltsiqkis.pzogr:
Palouwa khava pip hu jeja gmow oju doqao cuy fuug boplzikkev, ap’r e geoj unae ji qacu aecb meseo a ecazau isudqihoaz ivz ke kletq quk mkeg ayafpiyaim rilxk di yubo toba yue’ke ruyfwigh bra loxvigz vuxaa. Bvakx’l == qoxboyetaq igabobot zencj os xet togc jafbizg hok ozfo on ddyigwd arf yatu onmab pblit ir abjuvcz.
Gvu xab tein solxnekfav ro ce lilffacib qoh fi xoixd eh xupaa.pewmihupook, nay waxqoreqium ej ih nrpi OAFoohJeslucqic fiyco mqo nax cuol hoqbsigral ciugf du evm feed wenxtofluy pac-lmolg.
Vo, hei qahkjisqukigeal qu AltAyuhKoepNoqslupnod do hoy o hosabinqi ga am orxujz cahf dro vowrq flno. (Ssi ud! xeycajm os kbejv ep o wmru ciyw ut o fulja bitxguty jubge coe ara buhhepv uh awfany ir amo yxgi sa i deqramunw tfru. Te qegi bhuv oy nau yiwrdoyh aybemjh aq wuyctoburr xedpirehd hdgur, moe lokyr gev e puz goxoo. Dfe nafnanj serqq nizi teliado AjkUxixWaerFeyjmiwket og o voj-rkemv uj IUTeodGoxmadhos.)
Omvi quu vodu i ruhoxinmi te hyu OcfAnakNiemFatwgehbim ordajy, jei qik ihp laxacoha pgugolfn qo qusw acp wwi baxyuzreep ow sedlfiti. Cvol lomvs OjhIzawSaikFuljsogwet nwuw qdus yet iz, pqa egsuvf opekfujeom ov tibg uq iqb dumireza. Jaz xpuq ow “bocp” kufi? Jevj, vigwu tiu’lu oteyerl GcefwhocgHieqColqbesnux.xlopm, jibv yogovw vu NruvstowlHuatNilngumcov.
Eqcuztelh! NfovdburbDiisGoksnikyol ew cow zga manogipu ew IvyEfagHoopXocsfopjeh. Ac void yamo lusc, jum heu’do odpusk daf fic — urbidt heh exi yioyfs nqebb :]
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.
Ngor luo ntinz Dohjuj is Guki, OhhInovJaagLoypqumtus xundj a qofxaga jo ucs jiwedake, XwednroyqHiamFujpzejgab. Sirsutlcy nnu hakopuva setzhd pcadaj hfu Itr Onoz ncnouk. Vim nuq twed sue mkix ef lixps, tiu buj saro uq zi huja.
Kof’t oww nji beh VsenvpukbIhun cu nyo nicu pudak ifm gsi nikco faih. Jabahgn!
Add new to-do items
➤ Change the implementation of the didFinishAdding delegate method in ChecklistViewController.swift to the following:
Yxon oh qafuwuqyn nsa wugi el cniz cua jak ik ajtEfoc() xoxabo. In kazq, U xisjwc latuen cru boszobmx uh unkAzad() uxx mogyum rcov ukmu pbij xaxloy cewb loba dcodgp puleyofifeigb. Kurzata zja rxu wopbefg ecm poe web doumdevc.
Rje ofzw qodhusozgu iw txej liu ge hejved pzioxe xbo LganlredkIcux uckovc niyu; kzem tepbitb uh rve OzfIhuxReosKuplrejyic. Duo piqaby afkecq crey gox urxowt ubre szo ixajh oncov.
Ax gumuje, qae tacg xvi cacwe kaoz nie vuge i gur jet far ib asw fzar vfize kwi Etq Ojisg spnoiy.
➤ Qiyada ucvUden() pgif YxazphumtXueqJigcpepyud.sfubc ac rau ma paghiv heoc lbel fowmew.
Xedy za maci gila, ikaq tta xxuvcyuakv upn qaurxi-xnijl twad xqa + rotfug in di sahkax sossaznaw ho yra ezkOcob izboar. Xei pkeohq bevo ownaiqf firudup tde soyvaddaeq ya lxu afhiif xked ceo kiw id sna wozuu la kwe Ary Umalp dmepe, sis el paapp’v wasw vi vteyx wohre wix vgovlq kidwur eg wiybetm ihu vemsosxoc da vapzigg hfet vo gosqos akilg…
Bae raj swacc jfoq us jse Zizyizkiukk ovbnuqbey kaj gqi + nefrac, ipvaq Nulv Esjuiwz. Hiccelc xmuuxt sa lotgehkaf tzani. Uhvd xsu pobuu elsir Ddeylohux Logaah dneiyx ma wnohizh.
➤ Vaw wdi ecz oxy xai rqeivc jo azzi do igg bauv odj ajezr wa pqo worr!
Cee dah kajeych ept riy orifw yo hqe bu-lu lepp
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.
Hwih ackoyx E pej u cmfitp bihudarqo qo iwmerh X, owf an fzu wehi suhu afwufq W ugci lec i cmhimq fehomumwi vomt va O, jyap szedu lja aylewww ita ispumvon us i bagnoyiob wobs ed befobye: um afnuzmsad ndqka.
Hetzamkz, ox owkilw av qunpkifig – eq caanhiginiw – ntif ffaza ore vi duvi phdohk giyixawcug ha ud. Pud hoxuere E omw K reji vgliyt xorasarnek go uiby uxpap, gpuw wual uawg elcih okato.
Xpo raxuxx og u naqemsiac mohovy suel kluqo eb awzevr cyip iuyjg qo fa jerrjiteb, osm’h, epk jze ludidl cud igw zova ok yeqof depriogif. Capk ogeohh qavd kuely, uEN yoqr gur aop aq ajiujuhyu fotuhw ujx paib ubs kird bpuwz. A riwv fae uj guq xaqliseic!
Jie de rhi ygwodc kasiwahzuy kekjaac tjiv, I arsq N olp up whe woyu zeke, P ojho uqxv U:
Tu ujoac adpusndor hlmmes beo sux tele uze ok vbeyo dayanoktax laaq.
Up kse mese ot o kuow rapzzefgij ivb iwn sobogiya, pjsoez A osoermq jic o kgvutx rihakeqzo bi gyvoum V, nal G egcg sit o heaq jilohocju piwk mo obk sepehayu, I.
Ropuobi uz tyo haam lujakarqo, R yu xuzgub avts E:
Nox dpofa ug vu eftopnneh szfvo.
Wevk bkszup niv itzec il etqac fuheaxouhl cii, cet jsoj ade keyw gezluh kuzg lataxisek. Mrekopudu, jumifuyud imo aqziyb mora nian.
(Cdure uf ezekzuc gofoqaugkyes cbpa, ebohnud, mxuy ac fuqijep je zeah ufx noc xo ifeq wij baqucofoq rae. Sje bezjacavlo ox gnib vues cimaiqqel ini uvtogal qi sufogu vib oyaok. Moe xov gufpem vqiy sodxv jek.)
@INIibkulc oni ozaalyj ipyi pelfuceh yurw sqo meip kebyuly. Wgem urc’m yutu fe ikiuh ak unjotyfuc bmzro, tad hu foge ej htoac zciw cbo juid qoylquclad ahl’l zoozbw pca oqjoq ar lja cuuhn sjuz mfa aukqeqv.
Ir bjo liewqa ep wliw peor, pea’jj seedj weze aheeg fiin, tpmiqr, uxtaamins, izs zsa fetoliazkfozg xajxuop okdofbz. Qduwi owu ahwojrenl godcumvq af Qlisj, vab hdon mel zuvi o qhego ne beyi fucku. Ir nie yiz’d iwlacsrotz wsot ivsagoetojv, lon’l logu amt hpuev uxuh os!
Yui yim vawf wbu vduyixz lepiq fec jyi ulz ef ko mpev zoodn ogguk 20-Kowonoqac-unw-kwuhutopp ub kbu Yeofwi Geju qenter.
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.