Ich habe Probleme zu verstehen, wenn Eigenschaften in Objective C 2.0 verwendet werden. Es scheint, dass Sie keine Eigenschaft für einen primitiven Typ benötigen wie: int, bool, float. Ist das wahr? Ich habe Beispiele gesehen, die Eigenschaften für diese Typen zeigen und andere, die sie auslassen. Zum Beispiel in der Probe von Apple Code, den sie haben:Verwendung von Eigenschaften für primitive Typen
...
@interface Book : NSObject {
// Primary key in the database.
NSInteger primaryKey;
// Attributes.
NSString *title;
NSDate *copyright;
NSString *author;
BOOL hydrated;
BOOL dirty;
NSData *data;
}
@property (assign, nonatomic, readonly) NSInteger primaryKey;
// The remaining attributes are copied rather than retained because they are value objects.
@property (copy, nonatomic) NSString *title;
@property (copy, nonatomic) NSDate *copyright;
@property (copy, nonatomic) NSString *author;
...
Apple SQLite Book List Sample Code
So wie Sie sehen können sie keine Eigenschaft für BOOL verwenden, aber sie behandeln es eine Instanzvariable in der gesamten Implementierungsdatei hat, Lesen des Wertes und Einstellen des Wertes. Online suchen Ich habe Lernprogramme gefunden, die Eigenschaften für diese Typen verwenden, wie zum Beispiel: (@property BOOL flag). Kann jemand für mich dieses Thema beleuchten? Vielen Dank.
Danke Marc.Yeah, ich benutzte Eigenschaften für so ziemlich alles und war nur schrubben durch meine Klassen und sicherzustellen, dass es korrekt war. Ich habe den Link zu dem Apple-Beispielcode hinzugefügt, auf den ich mich in meiner Frage bezog. Aber es scheint, dass sie direkt darauf zugreifen (nicht durch selbst.dirty). – Sean
Ja, ich stimme zu, dass keine Eigenschaften für Primitive benötigt werden, wenn keine Notwendigkeit besteht. Wenn Sie außerhalb Ihrer Klasse darauf zugreifen müssen, benötigen Sie eine Eigenschaft. – mk12
Eine weitere Verwendung von Eigenschaften ist die Vereinfachung der Speicherverwaltung. In dealloc können Sie self.ivar1 = nil anstelle von [ivar1 release] haben; ivar1 = null; Keine große Veränderung, aber immer noch eine gute Angewohnheit, die den Code der Speicherverwaltung vereinfacht. Primitive brauchen das nicht, aber ich dachte, ich würde erklären, wo Eigenschaften nach deinem Kommentar nützlich sind. – Luke