objective-c private versus public-Methoden und-Deklaration in einer header-oder nicht?
Was ist die best-practice-Ansatz, um private Methoden in objective-c. Das ist eine Methode, die nur verwendet die Klasse als helper-Methode.
In allem, was mir nicht klar ist:
- Ist es eine Notwendigkeit, um die angegebene Methode in der header-Datei als private überhaupt? also warum nicht einfach lassen Sie es aus der header-Datei, und
- Wenn Sie können, lassen Sie es aus der header-Datei, dann was ist der Punkt, dass private Methoden?
- Oder ist es der Fall in objective-c gibt es keine solche Sache wie echte private Methoden, in dem Fall ist es besser, einfach geben Sie alles in die header-Datei und keine Mühe Kennzeichnung der private überhaupt?
Dank
- Denken Sie nur daran, dass es keine solche Sache wie eine 'private' - Methode, soweit Sie nicht in der Lage zu sein, aufgerufen aus anderen Klassen. Dass es in einer Kategorie verbirgt die Existenz der Methode, aber wenn die Klasse implementiert eine Methode, die darauf reagieren wird.
- oh...ok....tun die meisten Menschen immer noch Mühe, markieren Sie als privat oder nur stellen Sie dann der öffentlichkeit und in der Liste in der *.h-Datei zusammen mit true öffentlichen Methoden
- Wenn Sie möchten, erhalten Benutzer eine klare Schnittstelle, sollten Sie nicht die Liste der Methoden in der header, die Sie nicht verwenden möchten. Allerdings, wenn Sie nicht deklarieren Sie eine Klasse Erweiterung (siehe meine Antwort), verlieren Sie alle Feinheiten der compiler-time syntax-Prüfung. Anomie s Antwort ist gut, aber es ist das "C" Weg, Dinge zu tun. Klasse Erweiterungen ist der neue "Objective C" Weg, dies zu erreichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Notwendigkeit, legen Sie die Methode in der öffentlichen header-Datei. Möchten Sie vielleicht eine "private" - header-Datei für die Verwendung durch andere Klassen im Modul, wenn die Klassen im Modul sollen die "Freunde". Sie könnte sogar eine "geschützte" header-Datei, wie Apple funktioniert mit
UIGestureRecognizerSubclass.h
zum Beispiel. Es ist alles nur Konvention, obwohl, nichts, unterstützt durch die Sprache selbst.Private Methoden in Objective-C ist nur eine, die ist nicht öffentlich dokumentiert; jede Methode kann noch genannt werden, von überall, solange der Anrufer den Namen weiß Sie, um zu erstellen einen entsprechenden Selektor. Der Vorteil von nicht öffentlich dokumentieren eine Methode ist, dass Sie sind frei, zu ändern oder zu entfernen, ohne sich Gedanken über die Abwärtskompatibilität. Verlassen Sie aus der header-Datei ist eine Möglichkeit, nicht öffentlich zu dokumentieren.
Was Sie wahrscheinlich wollen, um zu verwenden, wird als "Class-Erweiterungen". Sie sehen zwar ähnlich aus, aber sollte nicht verwechselt werden mit Kategorien. Dies ermöglicht es Ihnen zu erklären private Methoden in Ihrem .m-Datei, und Sie bekommen all die schönen IDE-Korrekturen und Anregungen.
Hier ist ein anständiger Artikel über Sie
Und eine Verwandte Frage ALSO
Best practice (und ist auch eine compiler-option, um zu überprüfen) ist, dass ALLE Methoden deklariert werden, die eine oder andere Weise. Zu 'verstecken' helper-Methoden von neugierigen Augen, deklarieren Sie Sie als solche in der Umsetzung .m-Datei, wie in:
und so weiter. die privaten Methoden sind eine Kategorie namens " Private myClass Methoden. Diese Kategorie erklärt werden kann überall, auch im master .h-Datei namens private Methoden, obwohl, dass wäre ein Wartungs-Albtraum.
So, mit der öffentlichkeit .h-Datei für den public-Methoden, und die .m-Datei zu deklarieren private Methoden, Sie haben alle Ihre Methoden erklärt, irgendwo. Ich benutze diese compiler option zu gewährleisten und zu erzwingen, so dass jede Methode, die verwendet wird eigentlich irgendwo erklärt (oder ich bekomme einen syntax-Fehler) und ich somit nicht alle runtime stürzt ab, aufgrund der Methode nicht gefunden.