Ich habe mich gefragt, warum die Zuweisung von Werten zu Eigenschaften in einer anderen Klasse EXC_BAD_ACCESS verursacht. Ich kann nicht herausfinden, warum.Objective-C-Eigenschaft Getter/Setter-Absturz EXC_BAD_ACCESS
1.) Der Wert, der an den Setter gesendet wird, ist nicht Null; 2.) Wenn Sie versuchen, den Wert zuzuweisen, EXC_BAD_ACCESS passiert, ist die Variable Null;
Die Verwendung dieses Musters sowohl in Cocoa als auch in Cocoa Touch verursacht beide EXC_BAD_ACCESS, also glaube ich nicht, dass es die Plattform ist, aber ich glaube, es ist das Muster, das ich verwende.
Meine Fragen sind, ist es, wenn die Variablen zugewiesen sind, oder ist es die Art, wie ich die Eigenschaften erstellen?
Ich habe ein Dummy-Projekt erstellt, das in den folgenden Bildern zu sehen ist.
Jede Hilfe wird geschätzt.
EDIT: einige graben tun, änderte ich den Namen der Variable Setter (nicht der Eigenschaftsname) zu firstName__. Grundsätzlich wird der Code in dem Setter für setFirstName:
- (void)setFirstName:(NSString *)firstName__
{
self.firstName = firstName__;
}
Dadurch eine wenig Verwirrung, indem er sagt firstName__ aufgeklärt (und nicht self.firstName) gleich Null, auch wenn in der AppDelegate, ist der Wert nicht Null.
Vergessen zu erwähnen, ich kann das gewünschte Ergebnis erhalten Indem Sie die gleichen Setter in AppDelegate verwenden und sie in PersonInfo.m entfernen und @synthesize firstName, lastName hinzufügen; Anruf. – ReverseEffect
AFAIK, müssen Sie nicht mehr Setter/gettings OR erstellen oder synthetisieren. Fügen Sie einfach die Eigenschaften zur Kopfzeile hinzu und Sie sollten gut gehen. Wenn Sie andere Dinge tun möchten, wenn eine Variable festgelegt ist, ist das Überschreiben des Setter erforderlich. – Mike