Ich habe eine Kategorie auf NSDate, und ich möchte einige Funktionen implementieren, das Datum zu manipulieren, wie:Objective-C: Ändern „Selbst“ Wert innerhalb Selbst
NSDate *thedate = [NSDate date];
[thedate setToMidnight];
so dass ich eine Funktion in NSDate haben wie :
-(void)setToMidnight {
some code with calendars and comps
self = theNewDate;
}
Dies funktioniert innerhalb der Funktion, aber außerhalb dieser Memberfunktion hat thedate nicht geändert. Ich verstehe diese Fehlfunktion, weil mir gesagt wurde, dass Selbst nur eine lokale Variable ist, die innerhalb der Elementfunktion erstellt wurde. Also, wie kann ich das schaffen?
Natürlich hätte ich geschrieben:
thedate = [thedate dateAsMidnightDate]
or thedate = [NSDate dateAtMidnightFromDate:thedate]
aber ich fühle es mehr Sinn, in der Instanz der Klasse hat, wie ich will nicht das Datum ändern, sondern nur einige Werte der zuvor erstellten anpassen ein.
Toll ... Ich werde darüber nachdenken, aber es scheint nur ein wenig zu kompliziert für dieses einfache Bedürfnis zu sein. Gibt es eine Möglichkeit, ein NSDate in einem MyNSDate zu kapseln und die Nachrichten, die nicht von MyNSDate implementiert werden, an das NSDate-Attribut zu routen? – Oliver
@Oliver: Ja, tut mir leid, ich hätte es ein bisschen besser erklären sollen. Darauf bezieht sich "Weiterleitung von Nachrichten". Hier ist Apples Nachrichtenweiterleitung: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html – Chuck
Großartig, großartig! Für jetzt habe ich gerade eine Kategorie auf NSDate gemacht, aber wenn ich etwas Zeit habe, werde ich das versuchen. Wenn Sie so vorgehen und die Methode forward message in meine Klasse implementieren, wissen Sie, ob der Compiler mich benachrichtigen wird (oder aufhört, mich zu benachrichtigen), wenn ich nicht unterstützte/weitergeleitete Nachrichten an meine Klasse sende? – Oliver