Ich habe eine allgemeine Frage über Eigenschaften und Ivars.Konzepte von Eigenschaften mit entsprechenden Ivars
Ich habe viele verschiedene Beispiele gesehen, um Eigenschaften zu benutzen, und es verwirrt mich ein bisschen.
Methode 1 nur mit einer Eigenschaft ohne eine entsprechende ivar.
@property (...) Type *name;
@synthesize name;
Methode 2 eine Eigenschaft und ein Ivar mit
@interface{
Type *ivarName;
}
@property (...) Type *name;
@synthesize name = ivarName;
Methode 3 ignorieren Eigenschaften und das Arbeiten mit ivars
@interface{
Type *ivarName;
}
ivar = ...;
i 1 i für die meisten Dinge verwenden Methode, die derzeit mach es einfach. aber ich habe mich gefragt, ob ich hier etwas verpassen könnte. Ich habe eine Menge Fragen über VS-Eigenschaften von iVars gelesen, aber keiner von ihnen schien sich wirklich darum zu kümmern, wie sie zusammenarbeiten.
In den meisten Beispielprojekten habe ich Methode 2 verwendet. Also meine Frage ist: Gibt es einen Vorteil bei der Definition einer Eigenschaft und eines ivar, und dann die Eigenschaft dem ivar zuweisen, als nur eine Eigenschaft?
ist die Lösung so einfach wie: nur mit einer Eigenschaft kann ein ivar von 'außerhalb' gesetzt werden?
Ich habe gelesen: Must every ivar be a property? und Property vs. ivar in times of ARC aber war nicht in der Lage, eine endgültige Schlussfolgerung zu ziehen.
das ist wirklich eine gute Antwort!Was ich jetzt mit der Ankunft von ARC frage, ist es nicht ein bisschen "sicherer", Propeties zu verwenden, anstatt Ivars behalten und freigeben zu müssen, und dabei '[newCrunk retain] betrachten; [crunk release]; 'in deiner Probe? –
Ja, diese Methode ist jetzt völlig unnötig (und mit ARC, illegal, so zu schreiben). Das war nur ein Beispiel dafür, wie es in der Vergangenheit gemacht wurde. –
allright =) Ich habe es jetzt dank all Ihrer Antworten hier verstanden. danke Iulius für das klarste und vollständigste von ihnen und dafür, dass du dir die Zeit genommen hast, sogar nach dem historischen Ton zu suchen. es ist sehr geschätzt =) –