2011-01-14 8 views
2

Was ich hier mache, ist im Grunde eine Klassenerweiterung, die auch für Unterklassen sichtbar ist. Ich nehme an, der Effekt könnte erreicht werden, indem die privaten Methoden und Eigenschaften in einer separaten Kategoriedatei mit einem eigenen @ Implementierungsblock deklariert werden, der unabhängig von den Klassen ist. Die Superklasse und jede Unterklasse könnten dann den Header importieren. Das ist das Beste, was ich mir vorstellen kann, aber es fühlt sich an wie unnötige Dateiverschmutzung, und die Praxis, private Methoden mit Kategorien zu realisieren, wurde weitgehend durch Klassenerweiterungen ersetzt. Ich denke, es ist nicht möglich, aber ich frage nach der Möglichkeit, dass jemand, der cooler ist als ich, einen besseren Weg gefunden hat.Ist es möglich, private Methoden und Eigenschaften für Unterklassen sichtbar zu machen?

Antwort

2

Sie können Ihrem eigenen Vorschlag folgen (die privaten Methoden in einer separaten Kopfzeile deklarieren), aber Sie können eine Erweiterung verwenden, wenn Sie bevorzugen, anstatt eine Kategorie.

Apple macht genau dies mit UIGestureRecognizer. Schauen Sie sich UIGestureRecognizerSubclass.h an.

+0

Ja, die gleiche Philosophie könnte mit einer Extension funktionieren, aber egal wie Sie es schneiden, es ist eine extra Codedatei? –

+0

Es ist entweder das, oder Sie könnten einige Makro-Tricks machen. Machen Sie '#ifdef MY_CLASS_PRIVATE' vor Ihrer Unterklasse stuff und verwenden Sie' #define MY_CLASS_PRIVATE \ n # import 'in Ihrer Implementierung und Unterklassen. Ich würde jedoch eher die zusätzliche Datei bevorzugen, weil es klarer ist, was eine Unterklasse tun sollte. –

+0

Ah, interessant. Ja, ich würde auch die extra Datei nehmen. Es ist witzig, wie die Option jetzt ansprechender ist, wenn Sie darauf hingewiesen haben, dass Apple sie verwendet. Vielen Dank. –

Verwandte Themen