www.wikidata.uk-ua.nina.az
Objective C Obdzhektiv Si reflektivna visokorivneva ob yektno oriyentovana mova programuvannya zagalnogo priznachennya rozroblena u viglyadi naboru rozshiren standartnoyi S Objective CParadigma ob yektno oriyentovane programuvannya multiparadigmalne programuvannyad class based programmingd i RefleksiyaData poyavi 1986Tvorci Tom Love amp Brad CoxRozrobnik Apple Inc Ostannij relizSistema tipizaciyi statichna dinamichna tipizaciya d i slabka tipizaciya d Osnovni realizaciyi Clang GCCPid vplivom vid Smalltalk CVplinula na TOM Java Objective JOperacijna sistema Cross platformZvichajni rozshirennya fajliv h m mm abo CVebsajt The Objective C Programming Language Objective C u VikishovishiMova programuvannya Objective C rozroblena na pochatku 1980 h rokiv bula osnovnoyu movoyu sho vikoristovuvalasya kompaniyeyu NeXT dlya operacijnoyi sistemi NeXTSTEP vid yakoyi pishli macOS i iOS Na danij chas vikoristovuyetsya v osnovnomu u macOS ta GNUStep seredovishah rozroblenih na osnovi standartu OpenStep ta Cocoa biblioteki komponentiv dlya rozrobki program Programu na Objective C sho ne vikoristovuye cih bibliotek mozhna skompilyuvati dlya bud yakoyi platformi yaku pidtrimuye gcc kompilyator z pidtrimkoyu Objective C Objective C ye rozshirennyam S i tomu bud yaku programu na S mozhna skompilyuvati kompilyatorom Objective C OOP v Objective C vklyuchaye interfejsi klasi kategoriyi Realizovano odinichne nevirtualne spadkuvannya Nemaye yedinogo bazovogo klasu dlya vsih ob yektiv Vsi metodi v klasi virtualni Kategoriya paradigma yaka dozvolyaye opisuvati interfejs z metodami yaki neobov yazkovo implementuvati Sintaks Objective C porodzhenij odnochasno vid S ta Smalltalk Vid ostannoyi vzyato osnovnij semantichnij konstrukt movi zamist vikliku metodu ob yektovi nadsilayetsya povidomlennya Napriklad yaksho klas ob yekta obj implementuye metod doJob to govoritsya sho ob yekt vidklikayetsya na povidomlennya doJob Shob nadislati povidomlennya doJob comu ob yektovi potribno napisati obj doJob Takij mehanizm dozvolyaye nadsilati povidomlennya navit do tih ob yektiv yaki ne pidtrimuyut yihnoyi obrobki Takij pidhid vidriznyayetsya vid tih sho vikoristovuyutsya v statichno tipizovanih movah S chi Java Zmist 1 Istoriya 2 Sintaksis movi 3 Stvorennya novih klasiv 4 Yak pracyuye mehanizm povidomlen 5 Protokoli 6 Resursi 7 DzherelaIstoriya RedaguvatiNa pochatku 1980 h rokiv bulo populyarnim strukturne programuvannya Vono dozvolyalo rozbivati algoritm na mali chastini v osnovnomu shob vidiliti etapi algoritmu v okremi bloki i pracyuvati z nimi Odnak iz zrostannyam skladnosti zavdan strukturne programuvannya prizvodilo do znizhennya yakosti kodu Dovodilosya pisati vse bilshe funkcij yaki duzhe ridko mogli vikoristovuvatisya v inshih programah Bagato hto pobachiv v ob yektno oriyentovanomu programuvanni potencijne virishennya problemi yaka vinikla Z odnogo boku Smalltalk vikoristovuvali majzhe vsi bilsh mensh skladni sistemi Z inshogo vikoristannya virtualnih mashin silno galmuvalo robotu sistemi i vimagalo velicheznih resursiv ObjC stvoriv Bred Koks na pochatku 1980 h u svoyij kompaniyi Stepstone Vin namagavsya virishiti problemu povtornogo vikoristannya kodu Metoyu Koksa bulo stvorennya movi yaka pidtrimuvatime koncepciyu software IC Pid ciyeyu koncepciyeyu rozumiyetsya mozhlivist zbirati programi z gotovih komponentiv ob yektiv podibno do togo yak skladni elektronni pristroyi mozhut buti legko zibrani z naboru gotovih integralnih mikroshem Pri comu taka mova maye buti dosit prostoyu i zasnovanoyu na movi S shob polegshiti perehid rozrobnikiv na neyi Odniyeyu z cilej bulo takozh stvorennya modeli v yakij sami klasi takozh ye povnocinnimi ob yektami i pidtrimuvalasya b introspekciya i dinamichna obrobka povidomlen Otrimana v rezultati mova Objective C viyavilasya vkraj prostoyu na yiyi osvoyennya u S programista pide vsogo kilka dniv Vona ye same rozshirennyam movi S v movu S prosto dodano novi mozhlivosti dlya ob yektno oriyentovanogo programuvannya Pri comu bud yaka programa na S ye programoyu i na Objective C Odniyeyu z vidminnih ris Objective C ye yiyi dinamichnist cilij ryad rishen yaki zazvichaj prijmayutsya na etapi kompilyaciyi tut vidkladayutsya bezposeredno do etapu vikonannya She odniyeyu osoblivistyu movi ye te sho vona message oriented u toj chas yak C function oriented Ce oznachaye sho v nij vikliki metodu interpretuyutsya ne yak viklik funkciyi hocha do cogo zazvichaj vse zvoditsya a same yak vidpravlennya povidomlennya z im yam i argumentami ob yektu podibno do togo yak ce vidbuvayetsya v Smalltalk Takij pidhid daye cilij ryad plyusiv bud yakomu ob yektovi mozhna poslati bud yake povidomlennya Ob yekt mozhe zamist obrobki povidomlennya prosto pereslati jogo inshomu ob yektovi dlya obrobki tak zvane deleguvannya zokrema same tak mozhna legko realizuvati rozpodileni ob yekti tobto ob yekti sho znahodyatsya v riznih adresnih prostorah i navit na riznih komp yuterah Priv yazka povidomlennya do vidpovidnoyi funkciyi vidbuvayetsya bezposeredno na etapi vikonannya Mova Objective C pidtrimuye normalnu robotu z metainformaciyeyu tak u ob yekta bezposeredno na etapi vikonannya mozhna zapitati jogo klas spisok metodiv z tipami peredanih argumentiv i instance zminnih pereviriti chi ye klas nashadkom zadanogo i chi pidtrimuye vin zadanij protokol i t in U movi ye normalna pidtrimka protokoliv tobto ponyattya interfejsu ob yekta ta protokolu chitko rozdileno Dlya ob yektiv pidtrimuyetsya uspadkuvannya ne mnozhinne dlya protokoliv pidtrimuyetsya mnozhinne uspadkuvannya Ob yekt mozhe buti uspadkovanij vid inshogo ob yekta i vidrazu kilkoh protokoliv hocha ce skorishe ne uspadkuvannya protokolu a jogo pidtrimka Na danij moment mova Objective C pidtrimuyetsya kompilyatorami Clang i GCC pid upravlinnyam Windows Windows vikoristovuyetsya u skladi MinGW abo cygwin Dosit bagato v movi pereneseno na runtime biblioteku i silno zalezhit vid neyi Razom z kompilyatorom gcc postavlyayetsya minimalnij variant takoyi biblioteki Takozh mozhna vilno zavantazhiti runtime biblioteku kompaniyi Apple Apple s Objective C runtime Ci dvi runtime biblioteki dosit shozhi v osnovnomu vidminnist polyagaye v imenah metodiv dali prikladi budut oriyentuvatisya na runtime biblioteku vid kompaniyi Apple Sintaksis movi RedaguvatiU movi Objective C dlya poznachennya ob yektiv vikoristovuyetsya specialnij tip id Zminna tipu id faktichno ye vkazivnikom na dovilnij ob yekt Dlya poznachennya nulovogo vkazivnika na ob yekt vikoristovuyetsya konstanta nil NULL Pri comu zamist id mozhna vikoristovuvati i bilsh zvichne poznachennya z yavnoyu vkazivkoyu klasu Zokrema ostannye dozvolyaye kompilyatoru zdijsnyuvati deyaku perevirku pidtrimki povidomlennya ob yektami yaksho kompilyator z tipu zminnoyi ne mozhe zrobiti visnovok pro pidtrimku ob yektom danogo povidomlennya to vin vidast poperedzhennya Tim samim mova pidtrimuye perevirku tipiv ale v nestrogij formi tobto znajdeni nevidpovidnosti povertayutsya yak poperedzhennya a ne pomilki Dlya vidpravlennya povidomlen vikoristovuyetsya nastupnij sintaksis receiver message U cij konstrukciyi receiver ye vkazivnikom na ob yekt a message imenem metodu Na vidminu vid movi C nadsilannya povidomlennya nil u ye dozvolenoyu operaciyeyu yaka zavzhdi povertaye nulove znachennya nil Povidomlennya mozhe takozh mistiti parametri myRect setOrigin 30 0 50 0 U comu prikladi imenem metodu povidomlennya ye setOrigin Zvernit uvagu sho kozhnomu peredanomu argumentu vidpovidaye rivno odna dvokrapka Pri comu v navedenomu prikladi pershij argument maye mitku tekst pered dvokrapkoyu a drugij ni Mova Objective C dozvolyaye zabezpechuvati mitkami kozhen argument sho pomitno pidvishuye chitnist kodu i znizhuye jmovirnist peredachi nepravilnogo parametra Same takij stil prijnyatij bilshistyu rozrobnikiv myRect setWidth 10 0 height 20 0 U comu prikladi imenem povidomlennya vistupaye setWidth height Takozh pidtrimuyetsya mozhlivist peredachi dovilnoyi kilkosti argumentiv v povidomlenni myObject makeGroup obj1 obj2 obj3 obj4 nil Yak i funkciyi povidomlennya mozhut povertati znachennya Pri comu na vidminu vid movi S tipom znachennya yake povertayetsya za zamovchuvannyam ye id float area myRect area Rezultat odnogo povidomlennya mozhna vidrazu zh vikoristovuvati v inshomu povidomlenni myRect setColor otherRect color Yak uzhe zaznachalosya v Objective C klasi sami ye ob yektami Osnovnim zavdannyam takih ob yektiv tak zvanih class objects ye stvorennya ekzemplyariv danogo klasu ce duzhe shozhe na patern Abstract Factory Pri comu same im ya klasu vidigraye podvijnu rol z odnogo boku vono vistupaye tipom danih tobto vono mozhe buti vikoristane dlya opisu vkazivnikiv na ob yekti danogo klasu a z inshogo boku im ya klasu mozhe vistupati ob yektom yakomu nadsilayetsya povidomlennya v povidomlennyah im ya klasu mozhe brati uchast tilki yak receiver Rect myRect Rect alloc init U movi Objective C nemaye vbudovanogo tipu dlya bulevih velichin tomu zazvichaj takij tip vvoditsya shtuchno Dali dlya logichnih velichin bude vikoristovuvatisya tip BOOL z mozhlivimi znachennyami YES i NO yak ce robitsya v operacijnih sistemah NextStep Mac OS X Pershim dosit serjoznim zastosuvannyam movi Objective C bulo jogo vikoristannya v operacijnij sistemi NextStep Dlya ciyeyi sistemi bulo napisano veliku kilkist riznih klasiv na Objective C bagato z yakih doteper vikoristovuyutsya v Mac OS X Imena vsih cih klasiv pochinayutsya z prefiksa NS yakij poznachaye svoyu prinalezhnist do operacijnoyi sistemi NextStep Zaraz voni vhodyat v biblioteku Foundation na yakij buduyutsya programi dlya OS X i iOS Z odnim iz nih NSString mi oznajomimos v danij statti Cej klas sluzhit dlya roboti z ryadkami pri comu dlya vnutrishnogo predstavlennya simvoliv vikoristovuyetsya Yunikod Kompilyator pidtrimuye danij tip avtomatichno perevodyachi konstrukciyi vidu my string u vkazivnik na ob yekt klasu NSString yakij mistit danij ryadok tochnishe jogo pidklasu vidpovidnogo konstantnim ryadkami VlastivostiPripustimo v klasi Company isnuye instance zminna name interface Company NSObject NSString name Dlya dostupu do neyi zzovni najkrashe skoristatisya vlastivostyami yaki z yavilisya u Objective C 2 0 Dlya deklaraciyi vlastivostej vikoristovuyetsya klyuchove slovo property property retain NSString name U duzhkah pererahovuyutsya atributi dostupu do instance zminnoyi Atributi podilyayutsya na 3 osnovni grupi Imena akcessora i mutatoragetter getterName vikoristovuyetsya dlya zadannya imeni funkciyi yaka vikoristovuyetsya dlya otrimannya znachennya instance zminnoyi setter setterName vikoristovuyetsya dlya zadannya imeni funkciyi yaka vikoristovuyetsya dlya zadannya znachennya instance zminnoyi Obmezhennya chitannya zapisureadwrite vlastivist mozhe buti prochitana ta perezapisana readonly vlastivist mozhe buti tilki prochitana Ci atributi vzayemoviklyuchayut odin odnogo Atributi mutatora assign dlya zadannya novogo znachennya vikoristovuyetsya operator prisvoyennya Vikoristovuyetsya tilki dlya POD tipiv abo dlya ob yektiv yakimi mi ne volodiyemo retain vkazuye na te sho dlya ob yekta yakij vikoristovuyetsya yak nove znachennya instance zminnoyi upravlinnya pam yattyu vidbuvayetsya vruchnu ne zabuvayemo potim zvilniti pam yat copy vkazuye na te sho dlya prisvoyennya bude vikoristana kopiya peredanogo ob yekta weak analog assign pri zastosuvanni rezhimu avtomatichnogo pidrahunku posilan ARC povinen pidtrimuvatisya kompilyatorom strong analog retain pri zastosuvanni rezhimu avtomatichnogo pidrahunku posilan ARC povinen pidtrimuvatisya kompilyatorom Pri roboti pid GC niyakoyi riznici mizh vikoristannyam assign retain copy nemaye Dlya stvorennya kodu vlastivostej zgidno z tim yak voni opisani u deklaraciyi mozhna skoristatisya avtogeneraciyeyu kodu synthesize name Avtomatichno stvorenij kod ne zavzhdi optimalne rishennya i mozhe znadobitisya stvorennya metodiv dostupu do instance zminnih vruchnu Movu chasto kritikuyut za perevantazhenij v porivnyanni z inshimi movami sintaksis Odnak pri comu neridko vidznachayetsya jogo visha chitnist Stvorennya novih klasiv RedaguvatiVsi novi direktivi kompilyatoru u movi Objective C pochinayutsya z simvolu Yak i u C opis klasu i jogo realizaciya rozdileni zazvichaj opis pomishayetsya u zagolovnomu fajli z rozshirennyam h a realizaciya u fajli z rozshirennyam m Nizhche navoditsya zagalna struktura opisu novogo klasu interface ClassName SuperClass instance variable declarations method declarations end U versiyi runtime vid Apple vsi klasi mayut spilnogo predka klas NSObject yakij mistit cilij ryad vazhlivih metodiv Opis zminnih nichim ne vidriznyayetsya vid opisu zminnih v strukturah v movi S interface Rect NSObject float width float height BOOL isFilled NSColor color end Opisu metodiv pomitno vidriznyayutsya vid prijnyatih v C i duzhe silno shozhi na opisi metodiv v movi Smalltalk Kozhnij opis pochinayetsya zi znaka plyus abo minus Znak plyus poznachaye sho danij metod ye metodom klasu tobto jogo mozhna nadsilati tilki class object u a ne ekzemplyaram danogo klasu Faktichno metodi klasu ye analogami statichnih metodiv v klasah u movi C Znak minus sluzhit dlya poznachki metodiv ob yektiv ekzemplyariv danogo klasu Zvernit uvagu sho v Objective C vsi metodi ye virtualnimi tobto mozhut buti pereviznacheni Nizhche navodyatsya opisi mozhlivih metodiv dlya klasu Rect interface Rect NSObject float x y float width float height BOOL isFilled NSColor color newRect void display float width float height float area void setWidth float theWidth void setHeight float theHeight void setX float theX y float theY end Zvernit uvagu sho im ya metodu mozhe zbigatisya z im yam instance zminnoyi danogo klasu napriklad width i height Tip znachennya yake povertayetsya metodom vkazuyetsya u kruglih duzhkah vidrazu zh pislya znaka plyus abo minus ale pered nazvoyu metodu Yaksho tip ne vkazanij to vvazhayetsya sho povertayetsya znachennya tipu id Dali jde im ya metodu de pislya kozhnoyi dvokrapki zadayetsya tip argumentu u kruglih duzhkah i sam argument Mova Objective C dozvolyaye dlya argumentiv metodu zadavati takozh odin z nastupnih opisuvachiv oneway in out inout bycopy i byref Dani opisuvachi sluzhat dlya zadannya napryamu peredachi danih i sposobu peredachi Yih nayavnist pomitno sproshuye realizaciyu ta robotu z rozpodilenimi ob yektami yaki buli realizovani u operacijnij sistemi NextStep do pochatku 90 h rokiv minulogo stolittya Metod sho prijmaye dovilnu kilkist parametriv mozhe buti opisanij takim chinom makeGroup id object Dlya pidklyuchennya zagolovnogo fajlu v Objective C vikoristovuyetsya direktiva import analogichna include ale yaka garantuye sho danij fajl bude pidklyuchenij usogo odin raz U ryadi vipadkiv vinikaye neobhidnist u tomu sho dane im ya ye im yam klasu ale bez yavnogo jogo opisu taka neobhidnist vinikaye pri opisi dvoh klasiv kozhen z yakih posilayetsya na inshij klas U comu vipadku mozhna skoristatisya direktivoyu class yaka ogoloshuye sho nastupni za neyu imena ye imenami klasiv class Shape Rect Oval Realizaciya metodiv klasu viglyadaye nastupnim chinom import ClassName h implementation ClassName method implementations end Nizhche navedeno priklad realizaciya metodiv klasu Rect opisanogo vishe import Rect h implementation Rect newRect Rect rect Rect alloc init rect setWidth 1 0f rect setHeight 1 0f rect setX 0 0f y 0 0f return rect float width return width float height return height float area return self width self height void setWidth float theWidth width theWidth void setHeight float theHeight height theHeight void setX float theX y float theY x theX y theY end Yak vidno z prikladu v metodah dostupni vsi instance zminni Odnak yak i v C ye mozhlivist upravlyati vidimistyu zminnih vidimistyu metodiv keruvati ne mozhna za dopomogoyu direktiv private protected i public yaki diyut povnistyu analogichno movi C interface Worker NSObject char name private int age char evaluation protected int job float wage public id boss Pri comu do public zminnih klasu mozhna zvertatisya bezposeredno vikoristovuyuchi operator gt napriklad objPtr gt fieldName Yak pracyuye mehanizm povidomlen RedaguvatiKompilyator perevodit kozhne nadsilannya povidomlennya tobto konstrukciyu vidu object msg u viklik funkciyi objc msgSend Cya funkciya svoyim pershim parametrom prijmaye vkazivnik na ob yekt otrimuvach povidomlennya drugim parametrom vistupaye t zv selektor yakij sluguye dlya identifikaciyi povidomlennya yake nadsilayetsya Yaksho v povidomlenni prisutni argumenti to voni takozh peredayutsya objc msgSend yak tretij chetvertij i t d parametri Kozhen ob yekt Objective C mistit v sobi atribut isa vkazivnik na class object dlya danogo ob yekta Class object avtomatichno stvoryuyetsya kompilyatorom i isnuye yak odin ekzemplyar na yakij cherez isa posilayutsya vsi ekzemplyari danogo klasu Kozhen class object obov yazkovo mistit u sobi vkazivnik na class object dlya batkivskogo klasu superclass i dispatch table Ostannya yavlyaye soboyu slovnik yakij spivstavlyaye selektoram povidomlen faktichni adresi metodiv yaki yih realizuyut Takim chinom funkciya objc msgSend shukaye metod iz danim selektorom u dispatch table dlya danogo ob yekta Yaksho jogo tam nemaye to poshuk prodovzhuyetsya u dispatch table dlya jogo batkivskogo klasu i t d Yaksho metod tobto vidpovidna jomu funkciya znahoditsya to zdijsnyuyetsya jogo viklik z peredacheyu vsih neobhidnih argumentiv V inshomu vipadku ob yektu dayetsya ostannij shans obrobiti povidomlennya pered viklikom vinyatku selektor povidomlennya razom z parametrami zagortayetsya u specialnij ob yekt tipu NSInvocation i ob yektu nadsilayetsya povidomlennya forwardInvocation de parametrom vistupaye ob yekt klasu NSInvocation Yaksho ob yekt pidtrimuye forwardInvocation to vin mozhe abo sam obrobiti povidomlennya yake posilayetsya abo pereslati inshomu ob yektu dlya obrobki void forwardInvocation NSInvocation anInvocation if someOtherObject respondsToSelector anInvocation selector anInvocation invokeWithTarget someOtherObject else Dlya priskorennya poshuku povidomlen po dispatch table vikoristovuyetsya keshuvannya yake dozvolyaye pomitno zniziti vitrati na peresilannya povidomlennya Takozh polegshuye poshuk metodu za tablicyami vikoristannya tak zvanih selektoriv zamist zvichajnih imen Zazvichaj selektor yavlyaye soboyu 32 bitnu velichinu sho dozvolyaye odnoznachno identifikuvati metod Tip selektora poznachayetsya yak SEL i isnuye ryad funkcij i konstrukcij sho dozvolyayut zdijsnyuvati peretvorennya imeni u selektor i nazad Tak dlya otrimannya selektora povidomlennya bezposeredno po imeni sluzhit konstrukciya selector SEL setWidth selector setWidth SEL setPos selector setPosition y Dlya otrimannya selektora po ryadku simvoliv na etapi vikonannya ta perekladu selektora v ryadok pracyuyut funkciyi NSSelectorFromString i NSStringFromSelector SEL setWidth NSSelectorFromString setWidth NSString methodName NSStringFromSelector setPos Potuzhna pidtrimka metainformaciyi u Objective C dozvolyaye pryamo na etapi vikonannya pereviriti chi pidtrimuye ob yekt metod iz danimi selektorom za dopomogoyu nadsilannya jomu povidomlennya respondsToSelector if anObject respondsToSelector selector setWidth anObject setWidth 200 0 Dosit legko mozhna poslati povidomlennya yake vidpovidaye danomu selektoru bez argumentiv iz odnim dvoma abo troma argumentami za dopomogoyu metodu performSelector performSelector withObject performSelector withObject withObject performSelector withObject withObject withObject i tak dali myObject performSelector sel withObject nil Zvernit uvagu sho metodi performSelector zavzhdi povertayut znachennya tipu id Mozhna otrimati klas dlya danogo ob yekta nadislavshi jomu povidomlennya class Ce povidomlennya povertaye klas u viglyadi vkazivnika na ob yekt tipu Class Class cls anObject class NSString clsName NSStringFromClass cls Z inshogo boku takozh mozhna legko otrimati vidpovidnij class object po imeni klasu Class cls NSClassFromString clsName Kozhen metod faktichno yavlyaye soboyu funkciyu z dvoma nevidimimi argumentami self i cmd Pershij ye analogom this tobto vkazuye na sam ob yekt otrimuvach povidomlennya Drugij mistit selektor danogo metodu Argument self mozhe vikoristovuvatisya dlya nadsilannya povidomlen samomu sobi yak napriklad u nastupnomu metodi float area return self width self height Odnak krim self ye she odna velichina yakij mozhut nadsilatisya povidomlennya super Naspravdi super ne ye normalnoyu zminnoyu ce vsogo lishe she odne poznachennya dlya vkazivnika na potochnij ob yekt Ale pri nadsilanni povidomlennya super poshuk metodu pochinayetsya ne z dispatch table potochnogo ob yekta a iz dispatch table batkivskogo ob yekta Takim chinom nadsilayuchi povidomlennya super mi tim samim viklikayemo stari versiyi metodiv pereviznacheni danim klasom U movi Objective C mozhna po selektoru metodu otrimati adresu funkciyi yaka jogo realizuye Taka funkciya vidriznyayetsya vid opisu metodu tilki vstavkoyu u pochatok spisku argumentiv dvoh dodatkovih parametriv vkazivnika na sam ob yekt self i selektora danogo metodu cmd Nadislavshi ob yektu povidomlennya methodForSelector mi otrimuyemo u vidpovid adresu funkciyi yaka realizuye cej metod typedef float WidthFunc id SEL typedef void SetWidthFunc id SEL float WidthFunc widthFunc WidthFunc myRect methodForSelector selector width SetWidthFunc setWidthFunc SetWidthFunc myRect methodForSelector selector setWidth setWidthFunc myRect selector setWidth 27 5f Ce dozvolyaye pri neobhidnosti bagatorazovogo vikliku odnogo i togo zh metodu u zadanogo ob yekta povnistyu uniknuti vsih vitrat pov yazanih z peresilannyam povidomlen Protokoli RedaguvatiMova Objective C mistit povnocinnu pidtrimku protokoliv v C ce abstraktnij klas yakij takozh inkoli prijnyato nazivati interfejsom Protokol yavlyaye soboyu prosto spisok opisiv metodiv Ob yekt realizuye protokol yaksho vin mistit realizaciyi vsih metodiv opisanih v protokoli Protokoli zruchni tim sho dozvolyayut vidilyati zagalni risi u riznoridnih ob yektiv i peredavati informaciyu pro ob yekti zazdalegid nevidomih klasiv Najprostishe opis protokolu viglyadaye nastupnim chinom protocol ProtocolName method declarations end Tak protokol Serializable mozhe buti opisanij takim chinom protocol Serializable id initWithCoder NSCoder coder void encodeWithCoder NSCoder coder end Protokol mozhe buti uspadkovanij vid dovilnoyi kilkosti inshih protokoliv protocol MyProto lt Protocol1 Protocol2 Serializable Drawable gt Tochno tak samo mozhna pri opisi klasu zadati ne tilki batkivskij klas ale i nabir protokoliv interface MyClass SuperClass lt Protocol1 Protocol2 Serializable Drawable gt Dlya perevirki pid chas vikonannya programi pidtrimki ob yektom zadanogo protokolu mozhna vikoristovuvati povidomlennya conformsToProtocol if myObject conformsToProtocol protocol Serializable myObject encodeWithCoder myCoder Krim togo im ya protokolu protokoliv mozhna vikoristovuvati pri opisi zminnih dlya yavnoyi vkazivki kompilyatoru pro pidtrimku vidpovidnimi ob yektami protokolu protokoliv Tak yaksho zminna myObject mistit pokazhchik na ob yekt zazdalegid nevidomogo klasu ale pri comu zadovolnyaye protokoli Serializable i Drawable to yiyi mozhna opisati takim chinom id lt Serializable Drawable gt myObject Tochno tak samo yaksho zazdalegid vidomo sho myObject bude mistiti vkazivnik na ob yekt uspadkovanij vid klasu Shape i pidtrimuyuchogo protokol Serializable to cyu zminnu mozhna opisati takim chinom Shape lt Serializable gt myObject Zvernit uvagu sho podibnij opis sluzhit tilki dlya povidomlennya kompilyatoru yaki povidomlennya pidtrimuye danij ob yekt Yak i klasi vsi protokoli v Objective C predstavleni za dopomogoyu ob yektiv klasu Protocol Protocol myProto protocol Serializable Dlya poperednogo ogoloshennya protokoliv mozhna vikoristovuvati nastupnu konstrukciyu protocol MyProto Serializable Drawable Cya konstrukciya povidomlyaye kompilyator pro te sho MyProto Serializable i Drawable ye imenami protokoliv yaki budut viznacheni piznishe Resursi RedaguvatiMac Developer Library Arhivovano 17 bereznya 2013 u Wayback Machine Dzherela RedaguvatiAdvanced Flow Control for Objective C Arhivovano 3 kvitnya 2013 u Wayback Machine Debugging C Family Languages Arhivovano 4 lipnya 2013 u Wayback Machine Fun with the Objective C Runtime Arhivovano 3 kvitnya 2013 u Wayback Machine Steve Kochan on the Evolution of Objective C Arhivovano 28 bereznya 2013 u Wayback Machine The Dynamic Languages Renaissance Arhivovano 3 kvitnya 2013 u Wayback Machine Otrimano z https uk wikipedia org w index php title Objective C amp oldid 35688872