Kann ich eine Klassenkategorie verwenden, um eine Methode zu überschreiben, die bereits mithilfe einer Kategorie implementiert wurde? So was:
1) Ursprüngliche Methode
-(BOOL) method {
return true;
}
2) Überschriebene Methode
-(BOOL) method {
NSLog(@"error?");
return true;
}
Wird das funktionieren oder ist das illegal?
quelle
Sie können dies durch eine Anpassung der Klasse Cluster - Ansatz oder unter Verwendung von Methoden Swizzling Technik.
Andernfalls ist das Verhalten von zwei oder mehr kategorisierten Methoden undefiniert
quelle
Der alte Dokumentationslink ist tot. Der beste Ersatz, den ich finden konnte, war hier: Apple Docs :
Es ist Apple, der eine leichtere Note verwendet, aber der Hauptpunkt ist der gleiche: Sie laden eine Katastrophe ein, weil das unvorhersehbare Verhalten still ist.
quelle
Es ist wichtig zu beachten, dass eine Kategorie auch verwendet werden kann, um vorhandene Methoden in der Basisklasse (z. B. die Antriebsmethode der Car-Klasse) zu überschreiben. Sie sollten dies jedoch niemals tun. Das Problem ist, dass Kategorien eine flache Organisationsstruktur haben. Wenn Sie eine vorhandene Methode in Car + Maintenance.m überschreiben und dann entscheiden, dass Sie ihr Verhalten erneut mit einer anderen Kategorie ändern möchten, kann Objective-C nicht wissen, welche Implementierung verwendet werden soll. Unterklassen sind in einer solchen Situation fast immer eine bessere Option.
In diesem Tutorial finden Sie http://rypress.com/tutorials/objective-c/categories
quelle