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?
2
A
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.
Verwandte Themen
- 1. Ist es möglich, geschützte Eigenschaften und Methoden nachzuahmen?
- 2. ReSharper C# Benennungsstil für private Methoden und Eigenschaften
- 3. Ist es möglich, Schriftarten skalierbar zu machen?
- 4. Es ist möglich, SpeechRecognizer schneller zu machen?
- 5. Refactoring, um private Methoden für Unit-Tests verfügbar zu machen
- 6. Ist es möglich, die Methoden von Unterklassen für ein Superklassenobjekt aufzurufen?
- 7. Ist es möglich, alle Unterklassen einer Klasse zu erhalten?
- 8. Ist es möglich, eine Klasse Paket-private für Testzwecke
- 9. Prototyp für private Unter Methoden
- 10. Habe private Eigenschaften und Methoden in ES6-Klassen
- 11. AutoFixture und private Eigenschaften
- 12. ist es möglich, private Klasse zu erben, aber Mitglieder öffentlich zu machen?
- 13. Nur Eigenschaften für die Klasse und ihre Unterklassen
- 14. Ist es möglich, eine private Klasse zu haben?
- 15. Ist es möglich, SP/Function als private zu definieren?
- 16. Ist es möglich @Formula Annotation lazy loaded zu machen?
- 17. Private Methoden und Felder
- 18. private Felder und Methoden für eine Struktur
- 19. Ist es möglich, Anwendungen zu einem Drupal-Modul zu machen?
- 20. Ist es möglich, alle Methoden und Eigenschaften aufzulisten, die über Invoke() eines [ADSI] -Objekts verfügbar sind?
- 21. Ist es möglich, einen OpenGL ES-Layer transparent zu machen?
- 22. Ist es möglich, auf Eigenschaften und Funktionen von userdata zuzugreifen?
- 23. Ist es möglich, API mit diesen Methoden zu schützen?
- 24. Ist es möglich, generische Klassen für bestimmte Methoden einzuschränken?
- 25. Möglich, alle PHP-Klassen und ihre Methoden und Eigenschaften aufzulisten?
- 26. Ist es möglich, @synthesized Eigenschaften anzupassen?
- 27. Ist es möglich, Alias-Methoden in Ruby zu identifizieren?
- 28. Python: Machen Sie private Klassenmethoden immer statisch wenn möglich?
- 29. Private Typen sind für alle sichtbar?
- 30. Rails ActiveSuppport: Sorge und private Methoden
Ja, die gleiche Philosophie könnte mit einer Extension funktionieren, aber egal wie Sie es schneiden, es ist eine extra Codedatei? –
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. –
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. –