Objective-C nie ma pojęcia klas prywatnych ani prywatnych instancji zmiennych w formalny sposób deklaratywny.
Zamiast tego, widoczność w Objective-C jest w całości kontrolowana przez miejsce, w którym deklarujesz coś. Jeśli znajduje się w pliku nagłówkowym, może zostać zaimportowany przez coś innego. Jeśli zostanie zadeklarowany w pliku implementacji, nie można go (w rozsądnym zakresie) zaimportować, a zatem jest on faktycznie prywatny dla tej jednostki kompilacji.
I przez "to" mam na myśli prawie wszystko, co można zadeklarować; klasa, globalna, itp. ...
tj. jeśli wpiszesz parę @interface/@implementation
dla klasy w pliku .m
, ta klasa będzie faktycznie prywatna dla tej jednostki kompilacji. Oczywiście, bez przestrzeni nazw, upewnij się, że klasa jest jednoznacznie nazwana.
Rozważ to:
Foo.h:
@interface Foo: NSObject
... public interface
@end
Foo.m:
@interface __FooSupportClass: NSObject
... interface here ...
@end
@implementation __FooSupportClass
@end
@interface Foo()
@property(retain) __FooSupportClass *__fooSupport;
@end
@implementation Foo
@synthesize __fooSupport = fooSupport__;
... etc ...
@end
To daje prywatny po widoczności klasy support dostępne tylko w twoja implementacja ze zmiennymi instancji i metodami setter/getter na twojej klasie, które nie są widoczne poza kompilacją jednostka albo.
(Zauważ, że Objective-C ma „zmienne instancji”, a nie „zmienne”. Są one podobne, ale będziesz lepiej wyłączyć za pomocą słownictwa języka.)
Co z "klasą"? – Dani
Niestety, to, o co prosisz, nie istnieje w Obj-C. –
@Kevin Ballard: istnieje w Obj-C++ – Dani