Ich benutze nie Ivars. Ich verwende nur Eigenschaften - manchmal Eigenschaften mit primitiven Typen zuweisen, und manchmal auf einem
Hinweis: Ich bin ausschließlich auf die Ivars angewiesen, die automatisch (durch den Compiler?) für die Eigenschaftsdeklaration hinzugefügt werden.
Nicht zum Schließen markieren: Ich habe mir einige der anderen Fragen angeschaut, wie zB dies und dies und keines traf die Stelle. Die Titel sehen gut aus, aber wie so viele Fragen zu SO, sind die Fragen eine Mischung aus seltsamen Zweifeln und anderen Dingen.
Deklarierte Eigenschaften können nicht wie ein @protected
ivar behandelt werden. Sie können die Eigenschaft in einer Klassenerweiterung deklarieren, um sie für alle anderen Klassen privat zu halten, oder sie in der Header-Schnittstelle deklarieren, um sie öffentlich zugänglich zu machen. Sie kann jedoch nicht nur für Unterklassen zugänglich gemacht werden. Dies würde die Ivar-Deklaration erfordern.
BEARBEITEN
Nur noch ein kurzer Gedanke. Ich habe kürzlich viele Framework-Klassen geschrieben, und ich denke, es könnte etwas über die Verwendung von iVars als Dokumentation gesagt werden.
Angenommen, Sie rufen einen Code in einer engen Schleife an und möchten sicherstellen, dass er performant ist. Innerhalb dieser engen Schleife möchten Sie auf eine Eigenschaft einer Klasse zugreifen, müssen aber wissen, ob der Rückgabewert bei jedem Aufruf sofort berechnet oder in einem iVar gespeichert wird. Wenn Sie den iVar in der Kopfzeile sehen, können Sie schnell sicherstellen, dass Sie diese Variable ohne großen Aufwand zurückbekommen.
Ein guter Grund für mich: ein nerviger GCC-Fehler, siehe diese andere Frage für eine Beschreibung.
Wenn Sie Clang / LVVM verwenden, müssen Sie sich keine Gedanken über diesen Fehler machen.
Tags und Links objective-c ios automatic-properties