Mi chiedevo perché l'assegnazione dei valori alle proprietà in un'altra classe causasse EXC_BAD_ACCESS. Non riesco a capire perché.Errore Getter/Setter proprietà Objective-C EXC_BAD_ACCESS
1.) Il valore inviato al setter è diverso da zero; 2.) Quando si tenta di assegnare il valore, si verifica EXC_BAD_ACCESS, la variabile è nulla;
L'utilizzo di questo modello in entrambe le applicazioni Cocoa e Cocoa Touch causa entrambe EXC_BAD_ACCESS, quindi non penso che sia la piattaforma, ma credo che sia lo schema che sto utilizzando.
Le mie domande sono, è quando le variabili sono assegnate, o è il modo in cui sto creando le proprietà?
Ho creato un progetto fittizio che viene visualizzato nelle immagini seguenti.
Qualsiasi aiuto è apprezzato.
EDIT: Facendo qualche ricerca, ho cambiato il nome della variabile del setter (non il nome della proprietà) per firstName__. In sostanza, il codice del setter per setFirstName:
- (void)setFirstName:(NSString *)firstName__
{
self.firstName = firstName__;
}
In questo modo chiarito un po 'di confusione dicendo firstName__ (e non self.firstName) è uguale a zero, anche se nel AppDelegate, il valore è non nil.
Ho dimenticato di dire, POSSO ottenere il resu desiderato Usando gli stessi setter in AppDelegate e rimuovendoli in PersonInfo.m e aggiungendo @synthesize firstName, lastName; chiamata. – ReverseEffect
AFAIK, non è più necessario creare setter/gettings o sintetizzarli. Basta aggiungere le proprietà all'intestazione e si dovrebbe essere a posto. Se vuoi fare altre cose quando è impostata una variabile, sarà necessario eseguire l'override del setter. – Mike