Jak inicializovat podtřídy NSObject je na iPhone?

hlasů
18

Chci psát některé metody ve třídě, aby se jiní tříd mohou volat tyto metody používat [instance methodName:Parameter].

V případě, že třída je podtřídou UIViewController, mohu použít initWithNibNamek inicializaci. Ale já chci psát metody v NSObject své podtřídy, jak mohu to inicializovat?

Položena 02/03/2009 v 14:51
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
57

iphony je správné, ale on nebo ona neříká, že musíte napsat metodu init sami. Vaše metoda init by obecně měla vypadat nějak takto:

- (id) init
    {
    if (self = [super init])
         {
         myMember1 = 0; // do your own initialisation here
         myMember2 = 0;
         }
    return self;
    }

Ačkoli dokumentace jablko říká

Způsob init definovány ve třídě NSObject nemá žádný inicializace; jednoduše vrátí já.

a jeden může být jen v pokušení psát

- (id) init
  {
    myMember1 = 0; // do your own initialisation here
    myMember2 = 0;
    return self;
  }

To je špatně, a ne po tom, co je výslovně uvedeno v dokumentaci:

Ve vlastním provádění tohoto způsobu (init), je nutné vyvolat určený inicializátor Super je pak inicializuje a vrátí nový objekt.

MUSÍ. Nemělo by, mohla by se, atd.

Neměli byste předpokládat, NSObject je init nezmění v budoucnu; ani nadtřídou, ze kterého vaše vlastní třídu pochází.

Odpovězeno 02/03/2009 v 19:23
zdroj uživatelem

hlasů
-2

Připadá mi to může fungovat:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
Odpovězeno 02/03/2009 v 15:04
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more