Objective-C no tiene ninguna noción de clases privadas o variables de instancia privada en una forma declarativa formal.
En cambio, la visibilidad en Objective-C está completamente controlada por el lugar donde declaras algo. Si está en un archivo de encabezado, puede ser importado por otra cosa. Si se declara en un archivo de implementación, no se puede (razonablemente) importar y, por lo tanto, es efectivamente privado para esa unidad de compilación.
Y por "eso", quiero decir prácticamente cualquier cosa que pueda declararse; clase, global, etc ...
I.e. si pega un par de @interface/@implementation
para una clase en un archivo .m
, esa clase es efectivamente privada para esa unidad de compilación. Por supuesto, sin espacios de nombres, asegúrese de que la clase tenga un nombre único.
Considera:
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
Eso le da una clase de apoyo-privada por la visibilidad sólo está disponible en su implementación con una variable de instancia y métodos setter/getter en su clase que no son visibles fuera de la compilación unidad tampoco.
(Tenga en cuenta que Objective-C tiene "variables de instancia", no "variables miembro". Son similares, pero usted será mejor usar el vocabulario de la lengua.)
¿Qué pasa con 'class'? – Dani
Lo sentimos, lo que estás pidiendo no existe en Obj-C. –
@Kevin Ballard: existe en Obj-C++ – Dani