Ich versuche herauszufinden, wie die Dinge wirklich funktionieren. Also dachte ich, wenn ich bestimmte Methoden mit Kategorien überschreiben würde, würde ich interessante NSLogs bekommen.Wie wird die ursprüngliche Implementierung beim Überschreiben einer Methode mit einer Kategorie aufgerufen?
@implementation UIView(Learning)
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
NSLog(@"-hitTest:withEvent: event=%@", event);
return [self hitTest:point withEvent:event];
}
@end
Super und Selbst funktionieren hier nicht. Gibt es eine Möglichkeit, die ursprüngliche Implementierung von -hitTest aufzurufen: withEvent :? Was ich will ist ein NSLog jedes Mal - hitTest: withEvent: wird auf einer UIView aufgerufen.
Es ist nur für persönliche Lernzwecke. Ich möchte die Ereignislieferung in Aktion sehen.
Super-nicht, weil Sie in einer Kategorie arbeiten‘ Wenn du es nicht in der gleichen Klasse anrufst, nennst du es im Super der Klasse. In diesem Fall ist der Super ein UIResponder, der keine Methode hitTest: withEvent hat. Der Aufruf von self führt nur zu einer Endlosschleife, weil Sie hitTest überschreiben: withEvent für "self". –
Mein Kommentar sieht hier ein wenig fehl am Platz, aber es machte Sinn, bevor der vorhergehende kommentierte seinen gelöscht. –