2010-02-11 19 views

Respuesta

30

Primera declarar una "propiedad privada", utilizando el método de extensión estándar de la clase:

// VisualNotePlayer.h 
@interface VisualNotePlayer : NSObject<NotePlayer>{ 
    @private 
    UIView *_currentView; 
} 

// VisualNotePlayer.m 
@interface VisualNotePlayer() 
@property (nonatomic, retain) UIView *currentView; 
@end 

@implementation VisualNotePlayer 
@synthesize currentView=_currentView; 
... 
@end 

volver a crear las propiedades de una categoría:

// VisualNotePlayer+Views.h 
@interface VisualNotePlayer(Views) 
@property (nonatomic, retain) UIView *currentView; 
@end 

Esta interfaz es sólo accesible para los que importan VisualNotePlayer+Views.h

+0

Ah ... Así que debe tener varios archivos .h para la misma clase con eficacia. –

5

No existe una clase de amigos en ObjC.

Y para acceder a una variable privada de otra clase ni siquiera necesita ser declarado como amigo. Por ejemplo, puede utilizar las funciones de tiempo de ejecución

id the_private_ivar; 
object_getInstanceVariable(the_object, "_ivar_name", &the_private_ivar); 

para obtener the_object->_ivar_name, sin pasar por los controles del compilador.

Cuestiones relacionadas