Impostazione dei valori delle proprietà non attaccanti / ViewDidload Veni chiamato più volte in Xcode 4.3
-
28-10-2019 - |
Domanda
Quindi questo è strano.
Ho una proprietà:
@property (weak, nonatomic) Something *something; // .h
@synthesize something=_something // .m
Per qualche motivo, l'impostazione di quella proprietà non mantiene _something
impostare.
Ho anche scritto un setter:
- (void)setSomething:(Something *)something {
_something = something;
}
Il passato something
è un'istanza valida dell'oggetto. Tuttavia, dopo aver attraversato la linea _something = something
, _something
è zero e something
è ancora un oggetto valido.
Questo mi sta facendo impazzire, perché tutto mi sembra giusto. Ho scritto questo stesso genere di cose mille volte. L'unica cosa che è nuova è che questo è in Xcode 4.3.
Qualsiasi aiuto sarebbe apprezzato. Grazie!
ETA: Quindi, forse questo è un suggerimento? ViewDidload viene chiamato un intero carico di volte, in lotti di 4. Sto usando storyboard, quindi la vista viene automaticamente impostata correttamente. Forse il controller di visualizzazione non viene caricato o inizializzato correttamente o qualcosa del genere? Ho il set di lezioni e tutto sembra che dovrebbe funzionare, ma non lo è.
Soluzione
OK, l'ho capito. Non sono sicuro da dove provenga questo metodo, ma questo era nel codice di qualcosa di.Controler:
- (void)loadView {
// If you create your views manually, you MUST override this method and use it to create your views.
// If you use Interface Builder to create your views, then you must NOT override this method.
}
Poiché sto usando storyboard, la presenza stessa di questo metodo ha causato tutti i tipi di problemi. Sono piuttosto imbarazzato, perché probabilmente l'ho copiato e incollato da qualche parte senza pensarci.
Comunque, spero che questo aiuti qualcuno. Ha ucciso solo la maggior parte della mia giornata.
Altri suggerimenti
Forse la cosa che stai assegnando a quella proprietà non è indicata da nessun'altra parte. Quindi dopo l'incarico l'unico puntatore a quell'oggetto è la tua proprietà ed è settimana Quindi l'oggetto viene gettato fuori dal heap