ObjectiveCeeds › Objective-C: Private Methoden

Objective-C: Private Methoden

Von Manfred Kreß

Seite 1 von 3



Private Methoden, wie man sie zum Beispiel in Java kennt, gibt es in Objective-C nicht. Dennoch gibt es eine Möglichkeit, den Zugriff auf Methoden zu kontrollieren.

Die gängige Vorgehensweise so etwas wie private Methoden in Objective-C zu implementieren ist, das Interface dieser Methoden über eine Kategorie in der Implementation zu deklarieren. Die Methoden können allerdings ohne Probleme zur Laufzeit aufgerufen werden. Das dynamische Messaging von Objective-C macht dies möglich. Es gibt aber eine Möglichkeit, Methoden sehr viel effektiver zu schützen. Mit NSProxy, besser gesagt dessen Subklasse NSProtocolChecker. Proxys sind Objekte, die sozusagen als Stellvertreter anderer Objekte nach außen dienen. NSProxy ist eine Root Klasse, erbt also ausnahmsweise nicht von NSObject. NSProxy implementiert die Methoden, die für die grundlegenden Patterns von Cocoa von Bedeutung sind. Zum Beispiel retain und release für die Speicherverwaltung. Üblicherweise leiten Proxys dann Methodenaufrufe an ein dahinterstehendes Objekt weiter. Oder auch nicht… NSProtocolChecker ist eine Subklasse von NSProxy und definiert ein Objekt, das Nachrichten an ein anderes Objekt "filtert". NSProtocolChecker wird mit einem Targetobjekt und einem Protokoll initialisiert. Bekommt dieses Proxyobjekt nun eine Nachricht geschickt, wird nachgeschaut, ob die aufzurufende Methode im Protokoll vorhanden ist. Wenn ja, wird die Methode beim geschützten Objekt aufgerufen. Falls die Methode nicht im Protokoll vorhanden ist, wird eine Exception geworfen.

nächste Seite »
Seite: 1 von 3


Objective-C: Private Methoden

Die Praxis
Selbstschutz