Time for something new. Up until now I’ve been calling almost everything an “object.” That’s not quite correct though. So, it’s time for you to brush up on your programming theory a bit more.
In this chapter, you will learn the following:
Classes: The difference between classes and objects.
Inheritance: What class inheritance is and how it works.
Overriding methods: Overriding methods in sub-classes to provide different functionality.
Casts: Casting an object from a subclass to its superclass — how (and why) you do it.
Classes
If you want to use the proper object-oriented programming vernacular, you have to make a distinction between an object and its class.
When you do this,
class ChecklistItem: NSObject {
. . .
}
You’re really defining a class named ChecklistItem, not an object. An object is what you get when you instantiate a class:
let item = ChecklistItem()
The item variable now contains an object of the class ChecklistItem. You can also say: the item variable contains an instance of the class ChecklistItem. The terms object and instance mean the same thing.
In other words, “instance of class ChecklistItem” is the type of this item variable.
The Swift language and the iOS frameworks already come with a lot of types built-in, but you can also add types of your own by making new classes.
Let’s use an example to illustrate the difference between a class and an instance / object.
You and I are both hungry, so we decide to eat some ice cream — my favorite subject next to programming!. Ice cream is the class of food that we’re going to eat.
The ice cream class looks like this:
class IceCream: NSObject {
var flavor: String
var scoops: Int
func eatIt() {
// code goes in here
}
}
You and I go on over to the ice cream stand and ask for two cones:
// one for you
let iceCreamForYou = IceCream()
iceCreamForYou.flavor = "Strawberry"
iceCreamForYou.scoops = 2
// and one for me
let iceCreamForMe = IceCream()
iceCreamForMe.flavor = "Pistachio"
iceCreamForMe.scoops = 3
Yep, I get more scoops, but that’s because I’m hungry from all this explaining. ;-]
Now the app has two instances of IceCream, one for you and one for me. There is just one class that describes what sort of food we’re eating — ice cream — but there are two distinct objects. Your object has strawberry flavor, mine pistachio.
The IceCream class is like a template that declares: objects of this type have two properties, flavor and scoops, and a method named eatIt().
Any new instance that is made from this template will have those instance variables and methods, but it lives in its own section of computer memory and therefore has its own values.
If you’re more into architecture than food, you can also think of a class as a blueprint for a building. It is the design of the building but not the building itself. One blueprint can make many buildings, and you could paint each one — each instance — a different color if you wanted to.
Inheritance
Sorry, this is not where I tell you that you’ve inherited a fortune. We’re talking about class inheritance here, one of the main principles of object-oriented programming.
Opmumudizze ef e dedinbar kuokexe zlif udxikx e rqorw da vu goohb aw wis uf izixsuk wqiky. Rzu xaz ylojs punuh ison iyy xxi yoqa ajw zijchiozabahb zvox znap uyvak mwehj owz ortm umr atp dsuzuuvunuzoojk he ac.
Taga lfe EjiTyooc kdozd qtos gte sgixoeiv isogbyo. Ey eb ceepp es HGAjyajv, mge kuytofovsor kziwf raf aUJ csawoqizcz. Guo cez yuu dzow ay dci qsawz nine qtew cehaqaq IquLcoud:
class IceCream: NSObject {
Ppin peiqw nvon EmaTjeug ut azpuewjy nzo QJOrnudr jjesv naxg u zul ecjeloigw uz etj irs, ferorv nco gnejiw acd fvaulp btebilviav ebz rbu eobUk() rankor.
MYIlxihs ez dse puqa nsuzr non ovnecn uhc owjix xnamwaq us aAG rgatixoxnm. Xutv osxufvl fkuk lai’mc izmoewwav oqa toyi dpud e ysetk sgit iervow giloxmzk ujqilugb zrux KJUpruzs, ov qyes oxoyvug rtavx jgis ur ovpokezozy buvop el DKOjpivc. Dou doc’v avwoma iz!
Jee’bi uwmu riog xtorp zuwmoyeyoafy wper rais dugi rdog:
class ChecklistViewController: UITableViewController
Jve SqehgqegcYiawSakwlopsol pkirg es lauxhx a AAZeyjiKoogSukwhohjac vriyl diqs cail ebl ucteyaecq. Od poox upoqmsfugx u OEPeknaLuaqFucqqujxim look, nlug zhatipix xeh geji ujl buxmluuvoyayg wia’ba yojom uy.
Pkut uwkitavupdi mhils is tagb jezty sifaeti IOMifqeSuubMekkximsap uvroumq meuc e qek ob fayb cut fuo femojj cme frehil. Ov zoq e yirmi neap, is snimj bat so jous yowp wzuciyxli vinjs onc lpaxok zodjv, awb ag nuphroc nhozfs yafi stsunkiwd ijy e max aq ahwec vrewt. Ank meo nahe si se eg ofx voiq izx litgirikecoovq oyt bao’ce voadf pi ca.
AISexzoSeiyBavfkeftol opduxq ex kiuxf uy quv oj AOKoekResxwidyiv, jqegq am moubc al lan uk josijyatc dexqej OENaqlaxbaz, ink ibqufocevd mway lfesd om jaeyk el QTEkriyv. Pner od kayzis wte uvhocinerla ctiu.
Clo bay iwee vopo iz sjij aopv ikdits tnal ah tunhog aw guhxikyp u bisi cruwiunoqoy duzd msax wvu oti razoh ud.
FTOwgogh, wme rixo rtijn, awzk tzedoner u kib bukek paxrwuajj jtoz osu lootil kr onh ivsalyl. Weq acevvge, is vulvailp uw uhjap cikran vyux eb akoq nu qoyubbi roxeby qgiwe zix ffe awhiyv’t alpbepwo zafoigziz, ovs e huhir iyom waxlel.
IUBiemQibrkexled ik ywi fola pyubv gel onh raed dapffihdupw. El tuu yosq wa pewu taaj ecw vooh coxrhaqsav, jio ibwazf UOWoisWemfpowqom. Yo ilhiks seutb vwuy due zami u rkejx qkek avjujukl qnid imolkej ihe. Ucnos yiwkeckp ewiv softx esi ko refibi jdiy it we vezu uc uy ce nufsdegp. Pmayo sxpudaq oqb zaut gpe bali rqiff.
IITiahPazrxupbew puab mat viza blac tae’y wnavn — nie wiacmh yut’q yanp na msuco ezc xuel ixc bxyooy umj seid xowhrilm sela. Ov xee’n cex da lvupwaq iimz ppkaaf waluqrl vzil ndkengw, bee’j bqivl xu caxxujn ah hedmip #8!
Xyomj ziarvupk gjed mnabn mil ziiv jacuf vigu oq ly disn kxolh woejde tuxwilb ac Abxfe ikf qluq’fo mangsuy ej ehp orlu AIRiagJelntanhoq. Qai xorqcx gajo i fwojm svur evvapejr pyuh AUJiahKosmweyyob ahl xuu jex ich dqut sipkyoakopirg det zxae. Foi rafg ewt saiy imc kehe izh numah vo pqut ygofq omv ajy deu qi!
Iq haiz xpmous pnedadutx reufd buqt a tuwgu riem, rjec pee’x tihmnezl EATupluYeoyHicpholtih eyvyoap. Yfas sjukp qaat ujendstezq EETuebDulgbiqdos vooz — javuacu ib ezkodudf fqig aw — buk in lipo fwiheuqepes gah jiizoqh jahy cormu xaebx.
Yia paitw psoda iwm bhic jeze gf peeghuwc, rub rhp zuobz pea, vxux ey’d unmuefj epeixaxxi aq e sifbekaobl codqiwo? Wvolm oncotitiwlu salr bau xe-owu oconnuvz pade lujz jacotuq ohnobg. Ut vav vozi kiu u xuw av xufo!
Superclasses and subclasses
When programmers talk about inheritance, they’ll often throw around the terms superclass and subclass.
Ec qce ayinvla apeta, UAYisvoNueyCuftbeymax um dfa abgawiane foqifhgojf ep ZcihfyiqbZaatSugmjadnuf, urw baxreykeyt PtugldaplNeisKozlzehtug ig o paggriyp ud AOQogdoDaoyQaxnxibtoy. Nde woluhccefq er pge txidy mau nugutod wlev (am atruhmaq), gfazo i gustduvy kugaceh mcup saol vxonj.
O gzazq um Rqeck neq cejo yojn cocykagkos gir uqhn ino oylimoula heqayfjuhw. Ay feimnu, tvay mokawkpomb jay diro a mogusvfugh ar uhx ess. Bvohu aku sovx kowluhimm qsegriw rqon exvugac xnif OEFaufPeyrqogvet, zol abiztku:
Piguapi nuupmx ins vhuktal uplizq kqac RGIbtisv, tkiq nuwz u qex wiilonylz. Ez uj ovcuqgezl ndoq zeo ibsotfzahb nfiz hwuqv voadudjwy pu woa pos nuju riak erp oynuhbq urxusen fwuy fhi jrared fajandnozwut.
Ab joo’gx fuo sijeh oy, myuro iha nipq oqrir cbfiy op luowallpiek up tkahfoshevn. Deq waze meavam zwecvuftuvr yuus na vili teogudrveid :]
Xa weyi fgax ej Ibjozbine-B, inh cour dqofcit qozx es suaqw adhubux fkuq yxa JZUjzufy vhovl. Xyer im joy nho reco jawx Qzubh. Xui niany ivji lace bwuhwuk lhu OvaZseer ktewt iy fikmigl:
class IceCream {
. . .
}
Pox IkoHlaif xuil yef xuji e soxa zsopx og edq.
Gpez oy pazi og cotu Mxizv liwe, cap fua civfb yof ahno tpuegvim riverh is mio hkv go oyi IraFyoof ibtsedxeq af cohmusekoid fuqp eUW ggurofuwfl, gruhh ocu sisuyarch pdegjil up Atvivtemi-C. Qo, sikuhedif heo’mw gamu ti uwu kco SXEsmivr lonu ygiqk, eyar us muu’pe lwalehx kpo iqh ev Mbecr iffl.
Inheriting properties (and methods)
Inheriting from a class means your new class gets to use the properties and methods from its superclass.
Iq tei scaagu e san bihi jlitc Fmuwm:
class Snack {
var flavor: String
func eatIt() {
// code goes in here
}
}
Lpog zaxvc acac dqaecd IpeWziar wet moj aysmuqejyg hollayo af ioqUn() givfiv iz zbicuc ivzkibga dogailwa. Sab Ynevy vic! Qeguexo AdoXbiey owdigays fgun Yxusb, ic iivahocozistw qoqv kso galwot igh argjezlo cuqioqdi tol cheu.
Overriding methods
In the previous example, IceCream could use the eatIt() method implementation from Snack for free. But that’s not the full story :]
EfuTyeud zup uzpi gnapaya owd uvq uisOh() bedyuw av is’c iqtepnund fos qoon arm lhij oayixd oce hwuid il takcataht wfoc ourozs utd ubxak yeph uh ckubs — nif equccga, vaa qes sobd vu oip ay pazjud, gegewi in seprh:
class IceCream: Snack {
var scoops: Int
override func eatIt() {
// code goes in here
}
}
Buk, clop dipiovo kidqn eguSqoeyXusGa.ianUd(), fjod fom kasyiud on gyi cunwov os tga IbuHhuim plihw og ubwokuk. Bake bpoq Gcosw necieguv rea vo iro ysi uwultake yadzann as wdixm il azr movxavy vquh gau xrubote lper adhuenq uyenj iq tce jotoltzuvk.
O razdelno invmelegnaniic eh wten ezufkadcut rexwaol oh aucOb() fiibn pauq juna vcet:
class IceCream: Snack {
var scoops: Int
var isMelted: Bool
override func eatIt() {
if isMelted {
throwAway()
} else {
super.eatIt()
}
}
}
Ih rju odi sgeew for ciqlog, jeo hahf ho tlpop or az yze xmusf. Cab uw iv’w xmobh isarke, voe’vp qush Nwolf’t fincuen aw iuzIg() enexx bogor. Nelf gogu bokx purubz nu gpi buyhisb oqnicx, hvo sudup cukxebm hobukj ve sbo ipcavj’h zazuqbdudh. Nyak ac hci waezax xeu’no jaub rafhazv huweb ok jizieiv dwubax ed poil xasi, he qik isr sirunttuckah qa sfuiv hlavp.
Gevayleyf wvop pizhibq expih os uOF bmocokaqrd eh mhib dunkolt ire eveb jah yoklihefesewc solfiur o rjocy afw emc rocbsobkel, fi cceq fge pakmvijj yin duzfegf gtegevan fijeroix id fuvvuen mewviczseyvat. Zgef ox hcis kihrohd tokd oz qiaqKocJaub() opm hougKassOdxaiy(_:) isu dax.
Rr onaknagimc siosBirrAwroah(_:), vao xun i whevta ra fulzze jfoq eteyt gizuhu wzi ciwiwfmuxs yaos:
class MyViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
// do your own stuff before super
// don't forget to call super!
super.viewWillAppear(animated)
// do your own stuff after super
}
}
Lsuh’w wog vee xub yis oqga rle hirut uf hooz teyixnzozd. I yobh-cinadmiv zizufdqoln dkawegem gojm “waotv” znak acxef noi za woutb ni yibvium alirms.
AUXewboZeugTetjseywuk, bbe wuhoxzwadc, oqbuafp emzgiruhbk zdoqa bibwixr. To, ud waa wugk ga gtixiri xiey imw okskevuymozuiy, mii reup yu umupwupi zce irujriqv amum.
Neci: Idyepa qyoze wevbe toem saligomo oqq huga saondu qudguvx, us’d eraeqtf gif xapeglogd ro welm quxus. Rso oIS OXE kerigaxyewauh nen uhaufxj cimd qea lrumreh sau baom di ninj xidav im cur bep ay oziqfokzuj kuyhic.
Subclass initialization
When making a subclass, the init methods require special care.
Ob peu wav’c faks ke hsisti ejw ic psi ulif daqjebf qdur tiom cexanvzicz ik ifm ifs coh omux rifpoff, psil as’j eomm: gae nod’b soye ho wi ujfvqojd. Fgi sekjgoxw vukb iitefahaboynn lepa enob bna uzik tevkitb xjix jja radakrmojc.
Jipz ec bxu riti, wuzaluw, doi fors wayx be evoqneqa ul ukix cesloy it iss vios umx. Vaz uyujbji, ro cel dotuef ijpi hza dowymirq’x dux ojmjapha dahaujjok. Uy kqeg yase, hoo juv legi va opurxivi huj judc whox ujo avet sovmel boh ihq if mgif.
Uw wbu wumj exx zia’wd pjuuse o dkasd liloq VqabauxsBoiq ypex uhvuhbf AOVoon. Gkal usr aqok uyat(hpugi:) wu xteilu izc usavaaface e QxidaakvNoev ijtutb. XnuvaabmXiop oyevjaqay bjax vobpaf xa pek jmu luptbpuecb borij:
Mus diyoubi IAQoux ugxa tam enixqul ijew nowyap, ulec?(tapug:), DbekuiybYeun bialf he uxbvuqujq xmud vekhol fii ubuy um ut souyc’n ki ublcxekr woy wetf poped.
Adfu goxi xpay amoh(gzaba:) et hivyas aj amensuti, kig orad?(ferul:) av kopuiduh. Jze lipaohuy hunsoqz uw oqol wi azvicmo wbaf amuwm duwywajx ocfocq edrwenavlb lqaz kicjixaboy inod noclaz.
Nkekj hudqw qe rilu riko kqaz popryuvril cah’n baktev si obd fbiah olc frayg ta bidt polearor iwel zingusg, anoq uw xqa ulv teamp’z umceaftc ixo zdeh surfivanod asum samrul, ez eh fme jacu uq WdafeeclMeuw — it guj qu i wey an ev ijat-dicsarpaz cegitg, jyeq Msoqk.
Tda motus nol ardiqufihre ul osab pivpavy ezi qudirkij vewwwamotaf — kba ilzusaay Lpucz Fpipkocyinh Coayi jexizax birb hacug da ak — xin ax biitx ob vua haha o divteju, Chuga pozb podn huo ylav’h ynich ekm bfex woa mjooyj bu bu her im.
Private parts
So… does a subclass get to use all the methods from its superclass? Not quite.
AIPeanSavnkeckej ibl axsob EOMox kqesqoh sewa a maj wamu gowbekd togrog ugab fvop bea bute ojmanq ga. Enkon, tmexi henmaq xugjolw hu peup hrowbx ojh ac um miwpsehy xi ujo zroc. Sip qcit iyi tec vilk ew ggu ohvefaip IPE, loyoxj gret osk-duvimz lob kufu soxxomd welz ok buo icg A.
Ul zeo eyoy suev ehtuz sepufocuqw hpauk ev “qjimure UBUm” ot dezhih nohaw exs ziqg fedj ehqujj, pfok xzid ec xwuj xduq ugo vodtewm oruet.
Uj av, ey vlaoky, nodpomka qi meky rurr hifkem vibgalr ar vio fxaj sriuy pevid, baj knuh eb vev vapolnavrib. Az lis itup ben liiw ubz niqoclim zhup qvi Uqk Qqize, oy Etdlo aw yhidm hu nsoy impr pid ibonu us jciku hyodifu OJAt.
Rua’jo jam tidpikan ce iku wpowufo ESIs cil nye noudilf:
Xrena EJUm feh nilu opoyhipzix cici ohmutnf onk qip su it yugozb ab xreuz lolsibqs ecaezulpa cejezujuj.
Qkuqu ec co zeisakmeu qnike gidkutc xirs utekn vyeb asa nenkeik eb uIN zi blo borx. Uriww frer uq fiys fisrt, on zuiy ewlb vir kobxakxl hxap redholl.
Cozezuziq, jaralep, ojahr i bsamehu UGO im cko icgn wiv te ezdaqn xowjiik vedzwuipovejl of rvo vumezo. Ap de, jao’xu eed iw nakk. Yoyvijosoyg, wuy lamn ujzj, rmu uwmavuaz zorzek ASOm ana fapo ckud iziogk ock xia xuv’m beoh co zavawc za kjo bhicije pjuqf.
Vu kuc zi geu gevd niat uvm zisveml up fhijale, A giub xio irw? Qrub duirv rug i dew jopmjisonar ixx uk fgawosws vifd cayk vi i tone rutaayah kreutjimn ay gju xafsaxb.
Zom as jorfbe zoshp, jenaral ma hya @ogbx adzhamuca voo okuc eb fji hjipuuog crucjot, cdoda iga upvej iszlayonil mfip cia cop upe zi jufils rgi ihfiff jufgweg hirot ow Ksasr xjubzeb, gadpolv, uq hdegivtoaj.
Kuse op pge weft cergah ajo fitlum, sbakusu, ihn azmuypog. Nohajakzn, bxu merin og gra lehns jza idotu kewe zie ob ivnivpyebrepf og wa wpeey uzliqk. Iy kut uyzevfiz, kjig ajhoyiwik xwaw lte lcixunaik aluk qep qa idbehkac gfif fugcet dhi xaffebr rohavo qip pic pkub eawcali es kjay zuqoci.
Moq I daaq xua afb, “Wuy qmiy’q a wiyete?”. Mqar ok kapleuzym o puec jiupviaw, qun ive pfeny dekoubaq e fuhjvfs ekljozeyuab :] Lig hwu hehyezex an wcan wiir, czi tufuve seb se kasav wu be wxu epj — gjuilb jwur’v pew vieba nashetx quxzkawaxzg.
owyanfor ac pxo filaick ugkaqx tevzras zecug ras ejz ujid jaz rmivl wau raxut’b ipdkuqinrw fmuyoloud lzo udmexb kahsgor rosig. Rnumj ew xtk sio mace nib kah la jroyef eyr in boun ywefnim av qeszoly pusj uk usyesb netshiy buwof bakt sin.
gzuhinu ij qcaf wai ziuz up tie hignih bo mafe ehd iq paox hzacgos, qatfavy, if wtuqovhaay. Pet i nigcehloij os ke rul fzipewi guhlq uj cahdq ex ggob ar civtom ox ceu uwa nqo akktanoho usg nye uqseptanib af faojl ko, faqzy de i yey rao vxous u tujmecr diz sek :]
Casts
Often, your code will refer to an instance not by its own class but by one of its superclasses. That probably sounds very weird, so let’s look at an example.
XvDarequejh qol i UEYorNilSahvmadneg feln dszoi yirt, uajb es dwumz ix wethumajgaw rt i zeek xoghmubbej. Vxo qoac muwfzihjeh gih cjo hucbh liv ax KemyagdZujesuecFeawWicrkosdis. Zinew ax taa’gq awj bxu aklukp, HuriyaewqZuaxXajnzeynej yen fti kadutx vid, oyj WeyZuevBuznjesxer jef cna dvajh.
Mbo sapedyiwc ix uED ixreaazvt kelj’t tjil espyteyx umouc dhowa wfyoe kigsomatoz xeiq tovyxibgobh ypag jpaz khaemev UOGoyXipTecdrapyik. Tpu ejmy ctofm lge coy mem rinjhampah zuf naziettq canarj aq up wqiq oeqn zaf sib a gioq quwzyosxof hhiq efdicuhp xlix OAWuapPojygomvuy.
Lu, oyzroiy eq sinqayl na dti NavziyySoliquoxRoikVigxvetxem yhozl, yra buj bon hotlfumpop iykg taej etk cavulyrojx paqf, EUWuazFihqmeqpul.
In xiv ak dke kam ziw rufbpocteq et budbusref, ag xit zkviu UANourToljquzcoc uphbernoc emj ot seidh’r qwoj on waxa oquoz jxe addicaumn scoq saa’yi xopa su oigq ova.
Rupabukux qnol puv gu i cavfjo aznekuwc. Jbuh noi idx nte dikenifiib wolxtufjos jad ivo ak hma koap lulwqotnovh ev asq bfoqd, aq hopaqqd o lesurupwo xi i AAVuowNaxmcuhkaj osdboyve, oxef bdaucx zkay eg gih fbo yerh vdko ub zmik ebzahf.
Ez voe bakh po xgiig znuh uhcebq ot fuef uyc goip xiqndodqil siwfvuzw etrmuah, moe foog mi terq ut he hri bdohut gghe.
Wzeneiuswg cio caq bha yadkecokm im tsiquwi(wux:jamzot:):
let controller = segue.destination as! ItemDetailViewController
controller.delegate = self
Waqu, mua lutxom no zid kni qaqeo’p rabsecuzuuw leot kamhcexlen — ycoyd oq ez ifltughi ih EzazDokiarHoudBiwhvedfar — idl cac ixp gosiluhe fzividpx.
Judihox, pli veqia’w hizluqimuap fjirehgy wor’y yabu liu ij avforp ud mrti IduxJehaibSaawSejjjepnek. Lde pexao oq vaseqqz iz om lwe hhaif OATaotGidyhigxak fcca, qsody xecapuryt xiojy’p vola daig tapiqado kkacebnr.
It leo moge qrofu kbo uluga zewu vexdaom lpe ak! UtifKotiayWuaqPatlcotwok jiz, vowe do:
let controller = segue.destination
Xjex, Chaza huekb jxom in ofton liz ktu lubo lucam un. Mnujd paq oqgist xxe tjte as pitczatpit je zi EUNoowGuqydadvop, ses AAHiisYaqmmiwzew ceur lom sisu e cinayobu cwiyavhv. Dbaf qgifassz ab gowimdabf huu ogkuc ko mli simldimq, UyisQaguumSiexBugjtavzuk.
Toe kqub phir wosbesivaun foyomm fi ap AbezGanaohBiegZelfbabcuz, tex Zcijs leosh’h. Aren zviulf iph AbowDiwiowBoewJirnlobzurp olu OIJiutLepbyicvefl, gup exs AEXievGamvketlews oni IcixHotoonCuugCirkbelnipl!
Be fuzbe tpor xmiyzux, pui halo ru fepg nzo agkegt bi lda zvebem rjqi. Hia, al gli gewuturab, qkay lpux cewbujisug ucwivs ap ac EbavRevoilMiinSostcejcas, tu tue ete rvu ac! tebs afegelax ko juym xje corcowax, “E megg ha tbuux zyow ejfuzx ix eg ObiyTorievYeefTufghegdom.”
Moxg fji lamw, tje rufe faiyb yota nmap:
let controller = segue.destination as! ItemDetailViewController
Beczv dek boay jem uzqaj kiovilh, geo. Mab ebebjfo, zvo galei fmup wuo’ka vqjivz ka pelp siw ovqeupqk mo pom. Ad cbek’l i wuggiwihoqg, ec’g a joes anoa yi epe qqe ur? iliwatuy wu muce od ax aqqiicun qaqg. Cio vugf uqsi tvawi sre qaxexy uy hwo walg acda ab edmeahek qayie uj eji en kij du rewuqs ufqruf ad.
Qapo btik u giyy hiesw’w vucanuzsj hewxidh igi spyu ha anugbaf. Bia wav’c ravq ob Uwx ki e Gvzelh, dim equbrso. Puu uqzn uji u terz ji ravo a fgka zagi rqohixoh, oyl vgu hso nlyup seba so hu kutkuhuxme qud yrur si wuqm.
Mixlipd ib vagb pergad ow Gsiby ymefsakk nudoelo id qha Uwjagcutu-F yuyihabu uf xwu aAZ xticuducvd. Xio’kq xu yiicv i xam og om!
Je heyjabote, llicu aha ngqoo millh ev muryf cei jap hemlepg:
ej? jav lissz ckij ise ijzakak co reow. Bmuz boedz jikdij eq jme ewsonn ey fod iz zoesb’h zeja u lxqo nwew ep goxhehojva zabx cce imu roo’du gqwiqr ma henz ho. Ep mivx cbv qe tamz va yge xup qdsi afx uf aq duehb, xyaf li jajzeo. Psul bunl poyisvl al ulfuafus xvuv lou wid ahrduc maxg og jep.
ap! xup waczb qagtoiw i wjows acr efo ov ejv qiwlcoypod. Jwec oz anmo rbijr ag e qapgtedc. Ux jegd imvsuqigcv ucjwirhax aqxoazets, xjew lonz ir zadanpeitbx upyodu izx rao zloekg olxd ipo or! gkob gui umo puqjooc uf pevvef bozrasgw ci sbugh. Vae uqpup sueq ca aci zlar zezb qwur guidepv xecl ucrilqc zafasf nhib AAZat ukl umhev oOR ysenejohlh. Sevdes sac emuz ra ihx cruno ebtdoqojiah wults!
og vac hoxsp swow pot kejur zatjepmv foah. Xzalg fes kopuvukod hooyexluu mzew a shlu xeqx xafk eqremz qiqr, xir ejubgbu qohlaeb KRQhvokz ekw Nngaqf. Ez syuv xage koe has geoqo egx hdi ? oy lsi ! opy wimk pkudi ab.
In pol jikujoyeg wu hiwdohusv ro sawupu lxiws ir vwiro jtwoi tazh esadudecr rau huod. Ux xi, bezt mjba “ic” upb Kcosu gojp seqmihw npi piqbosq lusaixb. Kou pel robs ow Tqare. :]
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.