Nastavení proměnnou instance v initialize

hlasů
0

Je možné přiřadit hodnotu proměnné instance v průběhu způsobu spouštěcím třídy?

Jsem se prohlašuje, že počet polí, potom vytváří řadu polí, potom přiřazení k self.months, která je proměnná instance. Proč to nefunguje, a jak mohu dosáhnout?

      +(void)initialize
 {
    // .....
        NSArray *matrix = [[NSArray alloc] initWithObjects:jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec, nil ];

    self.months = matrix;
    [matrix release]

}

Položena 08/04/2009 v 22:08
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

Nelze nastavit proměnné instance v metodách třídy budete mít žádný odkaz na instanci. initializeMetoda na třídě se nazývá prvním třída přijímá všechny zprávy a je určen k tomu jakékoliv globální nastavení, které by mohly potřebovat vaši třídu ne¾ aktuální zprávy jsou zpracovány. Například nastavení výchozích uživatelských hodnot se obvykle provádí v initializemetodě regulátoru nebo delegáta třídu vaší aplikace.

Chcete-li nastavit proměnné instance, měli byste to udělat v objektu určeného inicializátor (což je initve výchozím nastavení, ale některé objekty změní určený inicializátor v případě, že je třeba vzít parametrů). Například:

- (id)init {
  if( (self = [super init]) ) {
    myInstanceVariable = (int *)malloc(50 * sizeof(int));
  }
}

- (void)dealloc {
  free(myInstanceVariable);
  [super dealloc];
}

Zde skutečně odkaz na selfkterý můžete použít, protože odlišné instance objektu byla přidělena.

Odpovězeno 08/04/2009 v 22:15
zdroj uživatelem

hlasů
3

Myslím, že jste zmatená o tom, co initializedělá. Je inicializovat třídě sám . Neexistuje žádná instance, a tudíž neexistují žádné instance proměnné. Pro inicializaci instance, přepsat initmetodu.

Odpovězeno 08/04/2009 v 22:15
zdroj uživatelem

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