English site
  • Objective-C: Kategorije

    Objavio: Luka Gabric, 15. 02. 2010. u kategoriji iPhone development

    kategorijeObjective-C podržava proširivanje klasa pomoću kategorija. Kategorije klase definiraju se slično kao što se definira i sama klasa. U primjeru je definirana klasa MojaKlasa. U “header” datoteci klase deklarirane su varijable mojString i mojInt, te metode postaviMojString i postaviMojInt.

    MojaKlasa.h:

    @interface MojaKlasa : NadKlasa
    {

    NSString *mojString;
    int mojInt;

    }

    - (void) postaviMojString: (NSString*) str;
    - (void) postaviMojInt: (int) i;

    @end

    Metode su definirane u implementaciji klase (datoteka MojaKlasa.m), a ne rade ništa drugo nego postavljaju vrijednosti varijabla klase – mojString i mojInt.

    MojaKlasa.m:

    #import “MojaKlasa.h”

    @implementation MojaKlasa

    - (void) postaviMojString: (NSString*) str

    {

    mojString = str;

    }

    - (void) postaviMojInt: (int) i
    {

    mojInt = i;

    }

    @end

    Slijedi definiranje kategorije klase MojaKlasa. Kategorije klase definiraju se slično kao i sama klasa. Potrebno je uvesti “header” datoteku klase koja se proširuje ovom kategorijom. Zatim, kao kod definiranja same klase, slijedi ključna riječ @interface s imenom klase, a u zagradi slijedi naziv kategorije.

    KategorijaMojeKlase.h:

    #import “MojaKlasa.h”

    @interface MojaKlasa (KategorijaMojeKlase)

    - (NSString*) MetodaUnutarKategorije;

    @end

    “Source” datoteka kategorije definira se kao i “source” datoteka klase. Potrebno je uvesti “header” datoteku kategorije, zatim slijedi ključna riječ @implementation, ime klase te u zagradi ime kategorije. Dalje se definiraju metode isto kao što se definiraju metode u samoj klasi.

    KategorijaMojeKlase.m:

    #import “KategorijaMojeKlase.h”

    @implementation MojaKlasa (KategorijaMojeKlase)

    - (NSString*) MetodaUnutarKategorije
    {

    return @”Metoda unutar kategorije je izvršena!!”;

    }

    @end

    Kako bi se instanca klase MojaKlasa mogla napraviti i koristiti unutar neke druge klase potrebno je unutar te druge klase uvesti “header” datoteke klase MojaKlasa i kategorije KategorijaMojeKlase.

    #import “MojaKlasa.h”

    #import “KategorijaMojeKlase.h”

    Neka instanca klase MojaKlasa ima naziv instancaMojeKlase. Deklarirane metode možemo pozvati na sljedeći način:

    [instancaMojeKlase postaviMojString:@"Neki string."];

    // vrijednost varijable mojString = “Neki string”

    [instancaMojeKlase postaviMojInt:123];

    // vrijednost varijable mojInt = 123

    NSString *nekiString = [instancaMojeKlase MetodaUnutarKategorije];

    // vrijednost varijable nekiString postavlja se pozivanjem metode MetodaUnutarKategorije koja vraća definirani string pa je vrijednost varijable nekiString = “Metoda unutar kategorije je izvršena!!”

  • 4 Responses to “Objective-C: Kategorije”

    1. fichek says:

      Mislim da ste zaboravili spomenut @property i dot sintaksu ;)

    2. fichek says:

      @ivana uskoro™ izlazi novi Flash koji ce izmedu ostalog imat opciju izrada iPhone appova (i u Mac i u Windows verziji.)

      A tu su i razna polu-rjesenja kao npr. http://monotouch.net koji ti omogucava razvoja iPhone appova u C#.

      Al ne moze se to nista usporedit s pravim Xcodeom i iPhone SDKom na pravom Mac OS Xu :)

    3. fichek says:

      Eh, ovaj zadnji komentar sam htio na drugi post stavit, samo sam ga u krivom tabu napisao, sorry :D

    4. luka.gabric says:

      @fichek

      All in good time, kako bi se preko Bare reklo!! :)

      U planu je cijeli niz tekstova koji će obuhvatiti, među ostalim, i property-je!!

      Pozdrav!!

    Leave a Reply