Wie man eine dynamic/berechnete Eigenschaft in iOS 7

Hatte gerade begonnen, iPhone-Programmierung mit iOS 7 finde ich Eigenschaften, die schwer zu erfassen, vorbei an den einfach. Es ist schwer zu erkennen, was relevant ist und was nicht mehr relevant, da entdeckt man die Dokumentation über Sie (amtlichen oder sonstigen), da die Dinge haben sich in den letzten paar releases.

Bekomme ich die grundlegenden Muster, z.B.

@property (strong, nonatomic) NSString *name;

Ich weiß, ich sollte unter _name wenn ich will, zu tun, einen direkten Zugang, aber getan haben die Eigenschaft, ich kann/sollte man tun self.name, und das wird sich in Dinge wie [self setName: ...] oder [self name] und das kann ich auch umsetzen, diese zu erstellen Nebenwirkungen, und ich bekomme KVO Verhalten von Ihnen.

Den neuen Boden, ich wollte es Wagen, heute, war, dass ein virtuelles Eigentum, so dass ich kann verwenden Sie die Punkt-notation beim Zugriff auf/Einstellung, aber das definiere ich die Zugangs - /set-Methoden. Genauer gesagt, ich habe ein Objekt mit den folgenden "normalen" Eigenschaften:

@property (strong, nonatomic) NSDate* started;
@property (strong, nonatomic) NSDate* paused;
@property (assign, nonatomic) BOOL repeat;

Möchte ich hinzufügen, dass ein status Eigenschaft, zurück/weisen Sie einen NSDictionary abgeleitet von diesen Werten. Der "Methoden" Teil I, wie zu schreiben:

- (NSMutableDictionary*) status {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    if (self.started != nil)
        dict[@"started"] = self.started;
    if (self.paused != nil)
        dict[@"paused"] = self.paused;
    if (self.repeat)
        dict[@"repeat"] = @(YES);
    return dict;
}

und

- (void) setStatus: (NSDictionary*) doc {
    self.started = doc[@"started"];
    self.paused = doc[@"paused"];
    self.repeat = doc[@"repeat"] != nil;
}

Was ich nicht weiß, ist, was Magie sauce füge ich wo, damit kann ich einfach self.status und self.status = @{}? In iOS 7 und Xcode 5. Ich brauche das nicht virtuelle/composite-Eigenschaft KVO ' ablé.

Schreibe einen Kommentar