Zugriff auf private Variablen aus einer externen Klasse - iOS
Ich habe eine private variable in einer Klasse und ich bin versucht, den Zugriff auf Variablen aus einer externen Klasse.
Gibt es eine Möglichkeit, ich könnte dies tun?
- Bitte klären Sie Ihre Frage mit einem code-Beispiel und Erklärung.
- warum erklären Sie es privat, wenn Sie zugreifen möchten es extern? Ich denke, dass verstößt gegen die grundlegenden OOP-Konzept der Kapselung
- Sie könnte verwenden Sie eine get-oder ich glaube, dass objective-c hat Eigenschaften, die Sie verwenden können, um die set-und get-private Variablen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die private Instanz-Variablen sind per definition privat. Sie können nicht auf Sie zugreifen, von extern. Wenn Sie der Autor der Klasse, sollten Sie die accessor-Methoden für die Variablen. Wenn Sie nicht sind, unterlassen Sie den Zugriff auf die variable.
Allerdings gibt es Möglichkeiten zum umgehen dieser Einschränkung.
Können Sie erstellen Sie eine Kategorie auf der ersten Klasse und fügen eine accessor-Methode für die Instanz-variable.
Oder Ihre verwenden können Schlüssel-Wert-Codierung, um den Zugriff auf die variable.
Private per definition bedeutet, es kann nicht zugegriffen werden von einer externen Klasse. Der einzige wirkliche Weg, um Zugang zu privaten Daten über Zugriffsmethoden zur Verfügung gestellt, die in der Schnittstelle.
In objective-c können Sie erstellen, die sogenannten Kategorien. Dies sind Gruppen von Methoden, die Sie im Grunde verwenden, um die Funktionalität einer Klasse. Ich bin nicht positiv über den Zugriff auf private member deklariert, die in externen Klassen (diejenigen, die Sie nicht den vollständigen Umsetzung), aber ich war in der Lage zu schreiben, eine Kategorie für meine eigene Klasse, die Zugriff auf die privaten member.
Ich nicht wirklich empfehlen, etwas wie das zu tun, obwohl, weil Entwickler in der Regel Daten privat, für einen Grund.
Können Sie erstellen Sie Ihre eigenen get/set-Methoden...ODER können Sie die Objective-C-standard, indem Sie deklarieren die variable als Eigenschaft deiner .h-Datei, und dann die Synthese es in Ihrem .m-Datei...im Hinterkopf Behalten, wenn andere Klassen können siehe die variable zugreifen zu können, dann ist es nicht mehr eine "private" variable
testViewController.h
testViewController.m