Ich habe eine Klassenstruktur des Typs UIViewControllerSubclass : UIViewController
, wobei die einzige Funktion von UIViewControllerSubclass zu #import UIViewController+Category.h
ist. Der Grund, warum ich Methoden in einer Kategorie hinzugefügt habe, ist, dass ich auch UITableViewControllerSubclass : UITableViewController
machen kann, was auch #import UIViewController+Category.h
ist. Wie wir alle wissen, wiederhole dich nicht.Ist es sicher, eine in Category definierte Methode in Objective-C zu überschreiben?
Nehmen wir nun an, dass UIViewController + Category.h die Struktur:
@interface UIViewController(Category)
- (void) method1;
- (void) method2;
@end
Wie sicher ist es UIViewControllerSubclassSubclass : UIViewControllerSubclass
, zu schaffen, die method1
außer Kraft gesetzt wird? Ich nehme an, das wird funktionieren, weil Objective-C die Nachricht weitergibt, aber aus irgendeinem Grund sagt mir meine Intuition, dass ich es falsch mache.
Sie müssen daran denken, dass Objective-C "Ente typed" ist. Wenn eine Klasse eine Methode unterstützt, können Sie sie (sicher) aufrufen, auch wenn die Methode nicht in der .h-Datei der Klasse definiert ist. (Wie Sie an den Compiler-Prüfungen vorbeischleichen, bleibt Ihnen überlassen.) –