Domanda

Voglio scrivere alcuni metodi in una classe in modo che altre classi possano chiamarli usando [nome metodo dell'istanza: parametro] .

Se la classe è una sottoclasse di UIViewController , posso usare initWithNibName per inizializzarla. Ma voglio scrivere i metodi in una sottoclasse di NSObject , come posso inizializzarlo?

È stato utile?

Soluzione 2

Trovo che possa funzionare:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];

Altri suggerimenti

iphony è corretto, ma lui o lei non dice che devi scrivere tu stesso il metodo init. Il tuo metodo init dovrebbe generalmente assomigliare a questo:

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

Anche se documentazione apple dice

  

Il metodo init definito nella classe NSObject non esegue l'inizializzazione; restituisce semplicemente sé.

e si può solo essere tentati di scrivere

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

questo è SBAGLIATO e non segue quanto indicato esplicitamente nella documentazione:

  

In un'implementazione personalizzata di questo metodo (init), devi invocare i super   inizializzatore designato quindi inizializza e restituisce il nuovo oggetto.

MUST. Non dovrebbe, potrebbe, dovrebbe, ecc.

Non dovresti assumere che init di NSObject non cambi in futuro; né la superclasse da cui deriva la tua classe personalizzata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top