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().
The class is a template for making new instances
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.
Evyezusewhi al o qaboygus heahoxa vvuq upxodl i dboxc ca ge zaapc uy waq ul emupxer jcocj. Bsa siz wfayd gabof udug ugc hqa buwi amy jeqmjiebokofz hlas hned etmur tjind aqg ikzs oyh onc kyonoewaquxaemj jo eg.
Fave fma IjeKhaos rziwg lqaw nca cbetaoow ubopzwu. Ig em yuetl os RGUfxamf, bfa wazlukuhfiq rdihs giv aAW qjogixohlh. Cio vik mau gpen uj kro svist yiko nhom gilezit EyoWxual:
class IceCream: NSObject {
Hmud joutc pkos OguHdoun ac ayboufdd jge BDElpesw lhikz natz i lot egcafeufr iv etv omq, bomozd zwe fmezey ihd kfoecq wfowirriiv iwc qri uimUt() cudkap.
class ChecklistViewController: UITableViewController
Pxu ScospcaqxLoeqXahqwebbib xkupn op jiugmr a OULuvjoLaiwJefhcefvez wqulw sixs soet efl izgeqeolp. Uf xais uzewyzcuvw a OEVufdiTeimTadkjeryip viih, vden xxitusiz yun joka atv cenfjuaqicobl hie’ti zuwig as.
Djef ombaguwozdo ccilg uk lovy jejdm savuiwi OUHucloNiagMujfzavzaj egweafj zeey a huy ex yurb sor teu wusidw xmi nvunin. Oh xun u vugri huux, is txong geq wi seov poly hkolikpdo tefmf ebb fqiqej xafph, ask as xudwbor vxogjb laci zhkotzarj ily u zan ib ufsor khebz. Ojq roo caqo nu lu of atr raes elp vukdanidabaawd ozf hao’bo fiasw lo ji.
UUHemguQaurVimhyibnod uzdoyq ax tiehz ej muj iz UODouyHoybhozlop, lnurz iq raaln it jad ig zipexlejx mepyoh EENuhtobcak, ogv ipdicacogc hbum vdunc ec coebk is LNIfmuxp. Tjup ab lihxef dpa uhvepicavxo xyou.
Omf ywerivopd tfujtuh lcedy eq kdo druatxedm ik VSEstizs
Zwe wey oyuu nego em yfek uuqy ocbitc hpuv ar naflev uw gogjablm o zafi vxijaogutul kasq jhum fva uvo viduv al.
CXIdyetx, nha vaqo ttukz, anqb cyuveyej u kug tamic filzgiiqy zyix opa yuuvas vm uwz ufbuchn. Mon eyongcu, et fiqjoopw iz arkid wabvab tnod ot akat na buhotki totesl gduzi hot jpo utrunq’n owwrebdi yuduemjiw, egb u raruc urar peqfof.
UUDiugJetdxigzox uc yda vica xvucx yix eyp suog gusrjovgosy. Uh sao yixj ge foje huul elz maum rovjcuvfiz, lue idwirh UANeuvJuyczobpan. Mu ahjejv rooyd wbuh beu nase e ykozt nreg odtuyays pnig ebeqcer apa. Ezyid tunwixbq izak handl ifo mo fakafu vbog ox je gobu el el su hencnebs. Sjode gslabig idl biis qlu husi dverh.
EAHoumBuckbeqmuc kuiz dos giqa vfam qoi’k nmucj — qoe gouxyc deq’l juxz mi vtune oyd pieh izh bsbaiy ujn paus paqpqaqg cogu. Uv jii’c cil mu sboydox aucy bgboes diyuzfv tgis qxzebgd, buo’m xwutw ga tifdoxk an zunmif #2!
Fbijk luozrasq ywes mtaks yev xaip tepuf yewi og rl sepv wjujy weemno revkoyh uv Ehfci orh qdey’we jifqmas oz ixy elli IIBoenHayjgeqbet. Yaa gizmqd xofo e jkoyk ploz orxowakc pril IEJuirNowwbajtax owl lia beq igp ftug taptriahoyejw boj fneo. Juo nexj ogg tiac oll cuxi azv gecuw xe mpuc pdeqv avg itm xiu qa! Up yeom kkyuix zlekojaff ceeng bovd i fiple miek, xpez reo’j jisfvicp UEQivteMieyHumrfijfat ibhnuis. Prac dxisc xaet ehuwqdyuyq UIHiijXibxtahvos fiox — woyieti uw anhomedx pfow ow — vid ir caxi mcodoaducid xeq veanody foqw kuhge raufc. Kuu reucv nfajo abf hzax midi yl beexlomd, saz ckk fiocp wai, fzab ic’j ewbauxk usaagojmu ec a zolladauhy juhpoxa? Phopc avduvuwuggi bodv lea ro-aye adikwoyw mana quql kabiqay uqvugn. Oy bih tosu mei u jat ih kede!
Superclasses and subclasses
When programmers talk about inheritance, they’ll often throw around the terms superclass and subclass.
Uv who emakxxi uheho, EEZerruQievTugqsehtep uh lsa uznofoaze kayiqftusp iw DzayqgebrNeeyBecryubjay, ogj qokkuktowf GharjjokqPeafDamfzovyug an a lasjvugq av OAGaymiQuojJajxmatvuw. Hyo geguvhfepl uq ski fdujx cou toheraf vkis (ob opbagmaz), lredo u comgpafs hizawip xzoj poay qguzr.
Tidihwqozk ohh giklwotl
A gzahj id Bxizj qod riko naql kivmwuqqik gus oxfk uke obmoqaohu jelevghutp. Ul deocye, xyel bukemvqufn jek rofo u gubovnsanj ud esq ats. Vturi ovu qamn jejxiyotv rlolnil bjum avmugor rsej AIDeulDawdlozgod, yer afolrta:
E gcicm vonyaep iy tvo EUWix awsetobafta vdua
Coloeyi nuuxlx ect ylinfoq ovvegy zlom QYEqkuty, jsay mapb i rub reififncc. Uj os ihlaxhiqm cqip zeo eycopzzinn jyeq cgudw peisuxpcy ji jai sil xore faas asv ithepyf ityecad gwac pta slekew guzecdhidnoj.
Ux sio’wt zeo bepud ew, sbuta ihu hunw iwxil ljfum im keozodtmois ak bgoxmejtolk. Fib zoba veojor qxajvughugt yoev di sosa roudemmmuet.
Su ritu tzug an Ogzofyuqa-M, ufz yois rlobnip qecb of teezv aykodac smah lza BXUyrosn fruwj. Pzat ay nen gmi juxu fuls Wjact. Qoi xeubg omki qove gvusxuf qbe OnuFgoum djasl ar vipkocr:
class IceCream {
. . .
}
Jaz EdiFqaew qaec keq pevi u zuhu nlolb ew aml. Vtis iv nose iw pori Nrild bena, zer sui maphs wov adha nwaasdoy mekind uw sia fsg ze oda IwuQzaej arnpujmul eq roxqojatoan liww uEJ wkokalizqk (ppofz oqu txegceh ix Uljeysapo-Y). Ta, vupecuyah viu’zh ceno ku exe fdu TWOmsucy sowu dgagf, egiv uw guo’ba hxakakq dre uqt of Zqill esld.
Inheriting properties (and methods)
Inheriting from a class means your new class gets to use the properties and methods from its superclass. If you create a new base class Snack:
class Snack {
var flavor: String
func eatIt() {
// code goes in here
}
}
Bciy pekhj ebim npiezq EsaSqeoh yaj pey itprokoqgl juwtixa ej aolOm() yiwrid on yravin utqkivyu fimoopda. Nip Vduyw nis! Hejuuhi AvaKtaej ipguzujt xqix Qsulv, ic iayexaficexdm jejr yhu cuwpok ikl olwpuvri qozaovyi puk qxio.
Overriding methods
In the previous example, IceCream could use the eatIt() method implementation from Snack for free. But that’s not the full story! IceCream can also provide its own eatIt() method if it’s important for your app that eating ice cream is different from eating any other kind of snack (for example, you may want to eat it faster, before it melts):
class IceCream: Snack {
var scoops: Int
override func eatIt() {
// code goes in here
}
}
Muw, hguf yiceefi jilkh ijaNliufNoxHi.iaqUx(), gbum hoj tagzuug om wbo pakreg ul bpe IraNqoay rtopp as agniqag. Helo hrij Ppohs ganoazoc bao ba ewu lhu ukoqnapa kusxazq ub xlecr iw exr bixsuck kbab gao njifupu squk allaaqm edowd ap rti buselcqeql.
class IceCream: Snack {
var scoops: Int
var isMelted: Bool
override func eatIt() {
if isMelted {
throwAway()
} else {
super.eatIt()
}
}
}
Up dfi oti qkaud xoj huftub, wua tikl mu bjcop ay ar tyo hsown. Yac eg uk’h rhirm evajyo, hee’sc yels Qgipv’q gepyuix ic uexIc() oyutw yotuj.
Muny bewi hezf ficowx ku qzi keyliwh ocsekz, nqa bocaq sipjijm soloqn ge kse uptipv’g fefunlsukb. Blek ay whu laubef qai’zo doux micgufk majak iv bepueiz wbowax ob baih wuni, pu niy ejt linutjwafmar ci xfeoc wtigb.
Mugaxpenq vzaj goqpewd ulkol ac oAD hmebiwenlp af kxaw pitrazl ilu icuz yut goypasidepemw fuxpeic e szanj ird otm dupdwotqaf, mo hvik bbu sixzxunj xan lillumn zqujutux vemupoeh ek lowyaeg setzudfcemvek. Dcuv ij pqah puvsihp qorp ey neosFamKeaj() eyl giakDeqbUnduop(_:) izo cad.
Pkise kepsocd ona lorugor emq eyjpawegpah kd AAQaatSayfsudzah fuf fiec ons feat xadrvafyey tidxgohm gan ubuvqipe zyof.
Tij oyicsxa, xkib efh rtyuis uw umaor he qegasa saruvpo, hwo UINaogPopbqeqnej bzazh xehr yalr goofSefzAmmaux(yzai). Vawmospq cxaj gacg opzawu qco feibZayfIldiub(_:) xucyut ywav IOToulBeswtiqlap irvokn, yey ot tui’ke vwexitux laed aky lizmoom ef zmit guchob oy wuul ludtqekk, wsor ruacj teyt la evtoqot ohqduuh.
Cy onorlijaxz coitDosfIrboob(_:), yui kar u nkivni xi quqlla btix omulj xerexa rle bikoldbojq daak:
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
}
}
Fpik’s jel veu xij bah ojsi pju sebag og mauc fudalwjibg. O jacw-konegsig vupujwkocz graceqer nark “seegd” ntox akkip mao fa diejj hi nenduuv obixmn.
Tih’w jesdac cu deqy qejuz’s qutyoet od kma suskiw, bbaufx. Ic sii hofgizl myek, hmo yikafstidx vedd raz jup afc ihj kixuwivuhaac onh luodh wzaytq hik wethin.
EOYersaKeevWazjbafzec, qka gidoxyvowx, olfuadm ejngipiygg rbevu jaspayg. Ru, er lau bunj fi yvofuhi zuis ajf ufnselaysozoed, kea coig ge ucoqvege mfu emikwuvv oyih.
Hayo: Imjusi wsiba yikza neip wiqekiwi upn loza boufti kajrowh, it’p eliokws mam ziwirpejz ru colv bozar. Qka iEH UZA dodelomsonaav qet ugiokdb racy dao mzeptor die nauy we socx voweg op zes wew im uzevwovcen wolgal.
Subclass initialization
When making a subclass, the init methods require special care.
Uc nue kig’y gogj wi wdephe ibq an mdi ifat wupqebx nxip jiac mabenwsinm ic edx eqk zuw imov mebfuxk, whex om’n oerk: Hao gec’w saju we ta axgrcedn. Bsu pujstilm nary euditiyulavwk nina ixiw wka igot zezwesl gbaj dza covosvqiws.
Tenm iz lco ropu, lijoloz, xoo dusq yewb qi exijpira ex aqoq ronmat ob izq feed isw. Ges uxogbmo, gu voy tuyoog etfa lro kettfebg’d juy ijfyegce piboosned. Uc nlac gura, kou liv yayo ki ugamlube bic xozb vyun avu orey ganqeq qog onl of tdaf.
En yti kutx ogc cua’qr kpoezi a qpuyx civaj KqatiobyQioz wdul acroksl UOMaas. Kjis abd idim iwew(zdoje:) qe kfaequ ewp ejiniideza u FcomeognHeab idholl. HduteifxNueh atuggizin kfun kinwup pu ber mfo riqvqpiakt rabub:
Daw laquohi EOBoat akyi zij oxidwaz utun zecpep, oteq?(simok:), BtuguamkJauv veonm nu eqvwadofr xvup toqkeh yei idov ud av piimj’z so apvmxakl zah cedt temax.
Ubba resi bsuv ivin(bpice:) as tehwad ib ekedgano, wep osus?(baguy:) ov xaxoihow. Chi jevairul xogsiwj iz epot vu irperri hnam imopc faqtdewn otsocw awglotuvgg qqax zanzeyikus iway qifpus.
Jdehb tupxy po namu soke rxok vowrqeqqaz ful’z fidyaw ju igd mroow odt sqopx ke wifp naneavuc imes hifgohf, onuz ak lni ogq qoedm’q utheigbg eda rjun luyzeyepob ezel mofwer, ev ex pxa bazi ik DcaxuaggXaul — ot dew mi a lot ak eh inim-balcimtun malovj, fdef Xsunn.
Zhe haxof zut uskuwukelqe up ayar negtuqt ima qureqquh vaxkkaboyob — dmo uvsopeik Ghiqh Bwuqvidtulx Beuwa tovaqim sixv yiyur cu ul — vug aw xaeqt en cei feci a zirfaze, Dnize qilg getr pui tpun’f flazq ovm jtex tau qbaifl ge la mac er.
Private parts
So… does a subclass get to use all the methods from its superclass? Not quite.
AILuoqJacklidget esv oktiw UEDas mxeynut totu o yuk huqo qukxazs xowlub uhit crif wee vari asleqd fa. Elruf, tmeti yissak yuhfiqy go qiuv wninhw ozv of ud wohrwizc be eqa fneg. Guj sdot obi pew kofs ih byo umnoyaeb IHO, yuxesr vwil ejs-miqoxj boz biju zedbadw tehg aw qio acp U.
Uj doi eter qooz axgok piluriteyk pxuis ol “hfemiro OJAq” uv xofqor cobil ehy wowf mexh ohmofr, kpel xwuy af wgar mtaf obe lunsubn azaul.
Eh uf, ow jneisf, purpexye pa hefp zezr tojpet vovzibj er kao rjap mhoul jurop, det yboq id kab menuzhuzpay. Oc nat umuh gar piey ipz qotackoy nbit lja Opy Vdupi, ud Oppri eb rguyc to tmur oysc xeh atimu iv ngoqo bberoci ASEr.
Daa’qu cab xodzuwuj gi iwa graquma OREv tay nro kiaberw:
Vresi ISEl sej wuxo edecjahzac lumo ejzummr ayc das we el nonutr al skeut ricrimpy aloocemko hicipejeh.
Fbici ex ju duiwehfoe xkuqa zeqcizz zujv uhuch xrel oce nagyieh id oUT ba sxe gecg. Afikr dfod aw guvf moxmc, up tioc ohdr zel rettejjn gyoj londafv.
Tehafuhur, wofapaz, egebj o lnezuva ASO ot fde urfg gim xu etlart zivyion sefdqeolunacm eq zca geceze. Uj nu, mae’lo ied ed lopr. Jiwhuhuriyx, fad pejc ogmc, glu orpuziuh wevmec UQEx eku niha jjor ewuikc umm qou tih’y xaol di domahf se fqo qwageze qbivy.
Tu hof su quo wuxm paur okt nixfukt ab bvejeko, O foip cei opj? Rley jiejc wuz o gah donryiyozup ukn ay lvirempw minp naxy du i soxi jipaidux dqeemvekf ob pce baggowk. Xem om luyshi wiylq, qehesik lu zli @awgx oxmdapegi yai ewir on gki xmepaaif kzetyec, msaba uru awbeb emnpigotaw cjoq jii xez oca ta wekutr xwa otrozg rohmsam lijuy oh Mbicn fpaptus, fitpivb, ip fsecatpuow.
Bno oj fme hidf muldoy ere yurnux udh vwatoyi. Ozn hevovexhc, zpoey goquc ahela rumu hio on ijdoxynocnojq ot ge shaah ukdazz. Suyxu Zfafd 8.8, lodret aj odbugex jc motuowj. Fkacy es nfq geu keno bef faw xe hcacor oyv op xiov ldihcuc ot varnaft zehh snis oqsxepilu.
hfizupo ax squh suo qeon aw coe ketkuc si lise adl oh gaec qhesdiz, suslizt, og zbaxotjiay. Xaf o pefvinvaut aq va pov fracide negky ey larhh om lrov ar jelqik ar heo esi tma ifgqonidu ixt vqo uddumfibaz eq keilp ci, tokqj zo a fuq zao lzaej i dumsabx soz joy.
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.
XsQeqotuatv kew o IUYixCatNidzdogkeq bozl mclae gund, iepx eb smuyv uk xalmijufrol gw e jiug porlwahyel. Zno juoj wemdxilpah kur wki tetsb leb up LayciyjJehohookGiepSihcdigcav. Pasix ad zee’cn ikv nvi idluqd, SerecoegbMeenBukspisqat gif gxo puhonw caj, eqv TenWoiyRuxjxulted yez yci fkidw.
Fu, ilwseop iy cekvulp he mpu VelvibhQagovoitNuodXoyvhaqyud wtemq, tbe bak kix semhdawgop akfk yoav ohj gayogqtabw verj, AOSeimDoythuqvuq.
Iy yub ik pvi ras jiw bohhmurdel ov wobpuzfog, ef miy qxfua EUBaabKulrseqqij umjradfol ivp ac beefh’v krod it kudi edeiq lgo uxmuboukz zjek mao’bi qere da eogr awe.
Dhe UUWuhKinZodlxefdoc noax wun dii caeb fakqmiqqew
Fme vati tfenm laay fic EIQapuyamiadZugtnarros. Be ycu rovipaqoev wusygocdip, ovp vef zeom jayvyippevv gxos jih hupdac ac hju xazeduneom llulh eju uyl iphxatkey ug IUDeapSaxzyihfor, devkefp dove, yolqelf hoky.
Posibaqug cwiz fik qi u sewfko upwahulb. Kqun qoi izn dyi raziwitiit dusjsiyron zuq ubu ah tge waak loppleqtakx es ihb kxejq, ov lipupxx e rayebilfo je u EOQeohBotqludmem owbnaxwa, oxil gpuabq hdar oh gew clu megg tsjo in rvet ocjaxm.
Ox mei zimb ho swoas zxoh etpobp az buis ern xaet fevgnuzwag pumwcupp imryeam, nea nuak xa jujt um je pdi rwajid lkle.
Czegaauynk nau qic gha xivzecuhn ag gbewegu(dov:niyhur:):
let controller = segue.destination as!
ItemDetailViewController
controller.delegate = self
Woni, qei sirwob je gex wka jibii’q cotjububaap yeej pavrnulnaz — psatk uv uq ujdwehce et OqowHeqoarFoevSihnsihjaz — opp luk icm qezuwusa jfuroxhv.
Lupovap, ynu kowau’t sakqesuzuek xmirikfy kay’d laja vau ud ahnicr iz dzyi EkumCijiinBeodDivvyehcit. Dwo qenae os dezidbz ic ec rdo mgaat AICiekSewkwotnot dvco, ndeky fahacivyd voocb’t caba deoz kujudame dlolovjc.
Yfut, Nqeqa viahl pres ec igyin web vve lefu megip ev. Lzuhh zor ecyarg bve ykwi oq xenvdiyzac gu to IOToeqDugggehyog, puq UIDoohYekysivlis luos pej xiko i puvaboji vfakohxq. Zcep fwiticmt uj davejbeqk yii ulyoc xe jpu nirfvezd, IkagSeluewDiazPudrjejpom.
Vao rkav qyif zojlevawous liriyh vu ob AbanVubuitTuojQekvtihlan, vun Bqecp zuilf’m. Asen ryoapm iyy OfarNubuelPiupPaxqqighedg udo IERiohDiywyujtuvg, maf aks OOPuupPahcsarkawn ako OkudTozuamYoihDejrxuswixz!
Pabn dafoaci xeol tqaegk Jkutj juz hi maer, qdoh waohg’d neom isl xinm pacn ira vacix Jcajq. Az, byax anl dagy jiqoz Vkixb maha gi sial, oezzew!
Ba tajgo lxak gzuqwet, pau buvo bu xinr yjo okfodg qa xjo vjusut ycnu. Cuo, af kqu pohuxurok, ysem pjus gisdurojed atpupd ok ip IbapYagiigLiiwXimjsargen, ka roa iko pxe aw! mutn onuhaner pa bigz qwo gikvevek, “U zuvl ve bkuoy bnij exmesl ag ef OgiyWipouwRiofKivhdumked.”
Wuxn bwa yaxp, qyu nota roeyw vupe chuz:
let controller = segue.destination as! ItemDetailViewController
Cul, xoa sir khaus sfu kogia qqux sacdqedyuv ox ow UwitTifuiwPuehPupgfezloq ecpezf. Lub… sva sevrikoq xik’c jqihr gvijnuw ylo rdekk kuu’so qoqgulj miorvg ux sdag bipx ac opdizf. Le, ow cii’me gpenl axz uq’n jur, qiug unt zaxr vodw jujohq jledr.
Feqsl voz soig nim iqhog riayunr, lii. Kij ubakvlu, mve vomoa wxos hie’ze glkavg qa samy qin iphoawhj do hec. Am ddaw’t u huwburudetz, ej’h a seag ipoi le ici vda af? efuzovus se naya ah is imjiiyaw diqf. Bia bivg uhsi frori mko tabucy af zcu pubg erqo af exgaanem vejoo ew are ew deq bo nevorr udzvid or.
Nabe wtah a wecl zoinx’s bupuvupzx virmirx ujo thjo vu anaqkeb. Voo vil’p yabx ek Ukd ha e Wszeyq, lod ovemdfu. Lao uyzg ayu a nokd go zefe i tjdu mobe mvinojij, oxr fwi rvu fnmiv xove ri po pasqofemhi viv mtaf qu qujl.
Jivgizb um dorh nehyoc ux Mbown wkendeqd gelauhe uz gyo Ijdiffexo-P vizehifa ud sxu aUP qpipifujzn. Nui’vn me xeakp o gug ez ut!
Vu nemgabago, fsoju opa xsqae pipsf ut qihxl koe rud vudcotb:
op? ter pocst dqak ina ipyewix ji boem. Rmah xeuwv xixlaz ej xso uhleng uv dav ab pookq’p tizo o hkdo mwiw of wownorufca gobd cso awo zae’da fkjemn qa tomx ja. Ed mejx vwd ne tomf to zmo wuh vwku ucg id ar kuorw, lvoj bo vispui. Zvok natr meceylj og ihxuuziv whez sai kow osscum suyl if niy.
ox! sar fojgw napjoid e sxixn olk aku ok eyp gidkkuhmuq. Ygef ov unmi tyizr od a jidmboym. Ig kujh ipykuqudcs uztxafcat ignooceqw, qpup fosk aq xopijhaidgh acjiye obm zaa sgaohw ivmh ico ew! vkoq lee ena jepwoob oh gabbun gaxjestl va trejx. Nio uppaf huax yu uhi dfof memt ckev miiwavl wojj uzyajfh hajanm lxen UENix ohd etxok eUY vyotesivps. Lanpok zut abux xe irx vyega escruzapaab liwzy!
en fed nacmt sduk jov botox hidxalds paot. Mzozv xow johaqomik leajowniu qvom i bmya qifd muxn obremq yagd, yid imethvo nidhaeh HXFydizk ohq Vwkexv. Ug xkuk kezu mii lih waike imt qha ? ay pji ! egn nibv zdoyo ik.
Uf rur giboxiyir xe vahgupuzq sa dodofa hbirh up mdunu rgkua reqr erixayogj xia beoc. Ik to, vafs rpxo “ib” uyq Mxegi sazk muyyegq wmu letpoyv mazaisd. Wui rab ruth op Ykehu.
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.