Quando si esegue l'override initWithCoder è sempre necessario chiamare [super initWithCoder: coder]

StackOverflow https://stackoverflow.com/questions/2435203

Domanda

In questo codice sto caricando un controller View (Vista e associati) da un .xib:

-(id)initWithCoder:(NSCoder *)coder
    {
    // add custom initialisation code here
    [super initWithCoder:coder];
    return self;
    }

Questo funziona con successo, ma io non capisco che cosa la linea [super initWithCoder: coder] sta realizzando. È che l'inizializzazione mia View Controller dopo la mia vista è stato inizializzato?

Si prega di essere il più esplicito possibile quando spiega. Grazie.

È stato utile?

Soluzione

La vostra classe è una sottoclasse di UIViewController. La chiamata sta dicendo la classe super (UIViewController) per fare i passi necessari per realizzare in modo che si può fare i tuoi passi init. Questo sarebbe la creazione di tutte le proprietà che la UIViewController preveda o la registrazione per le notifiche che la UIViewController deve fare il suo lavoro.

Si suggerisce quasi ogni volta che l'override un metodo della classe super per chiamare il metodo della classe di super in aggiunta ai passaggi che è necessario prendere.

Edit: Anche se non c'è bisogno di fare nulla in un metodo della superclasse fornisce, si può semplicemente lasciare fuori e il metodo della classe Super sarà usato al posto. In questo caso io non fornirebbe il metodo initWithCoder: a meno che non ci fosse qualche codice necessario per preforme in aggiunta a quello che hai mostrato.

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