Was ist der Objective-C-äquivalent zu einer öffentlichen get/protected set-Eigenschaft in C#
Gibt es eine Möglichkeit zu schaffen, eine Eigenschaft wie dieses C# - Eigenschaft in Objective-C?
public int prop { get; protected set;}
Im wesentlichen, ich möchte es möglich machen, den Wert von außerhalb der Klasse, aber nur in der Lage sein, den Wert innerhalb der Klasse.
- Tatsächlich geschützt, hat eine Besondere Bedeutung, es bedeutet auch, dass abgeleitete Klassen haben Zugriff.
- Protected oder private arbeiten für mich. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg dies zu erreichen ist zu erklären, dass die Eigenschaft als
readonly
in der öffentlichen Schnittstelle fürMyClass
(d.h. die .h-Datei):Dann, in .m-Datei für diese Klasse deklarieren Sie eine Klasse Erweiterung (eine Kategorie mit leerem Namen). In der Klasse-Erweiterungen, können Sie deklarieren ein @ - Eigenschaft zu ändern writeability auf readwrite:
Natürlich, Objective-C nicht die Durchsetzung von Zugriffsbeschränkungen, so gibt es nichts hindert einige Schurken-code aus aufrufen
-[MyClass setProp:]
. Der compiler moniert wird dies als eine Warnung, die allerdings so gut wie Sie können in Objective-C. Leider gibt es keine standard-Weg, um dieses Dokument "geschützt" schreibbare Eigenschaft Unterklassen; Sie müssen sich auf eine Konvention für Ihr team und oder legen Sie es in der öffentlichkeit-Dokumentation für die Klasse, wenn Sie in einem Rahmen, dass Sie gehen, um Sie freizugeben.readwrite
den Standard? Ist es notwendig, um anzugeben, dass?readonly
ursprünglichen Erklärung, diereadwrite
notwendig ist.readwrite
ist der Standard, redeclaring die Eigenschaft redeclares es alsreadwrite
standardmäßig. Das ist, was es bedeutet, ein Standard. 🙂Ich glaube, Sie sind auf der Suche für das readonly-Attribut @property
Lesen Sie mehr hier.
Gibt es keine Möglichkeit, Methoden @private/@geschützt in ObjC, diese compiler directoves gelten nur auf Instanz-Variablen. Sie können jedoch deklarieren Sie eine statische C-Funktion in der gleichen Datei zu bekommen, eine "@privat" - Methode.
keno die Antwort scheint, wie die meisten richtigen Weg, dies zu erreichen.