2011-11-23 20 views
7

Estoy intentando acceder a propiedades privadas en una clase heredada. ¿Es posible con esa convención de nombres que Apple me dio?Objetivo-C: acceder a propiedades privadas en una clase heredada

Cabecera:

#import <Foundation/Foundation.h> 

@interface FooBar : NSObject 
-(void)doSomeThingWithThisNumber:(NSInteger)aNumber; 
@end 

Implementación:

#import "FooBar.h" 


@interface FooBar() 
@property NSInteger myPrivateFoo; 
@end 


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

-(void)doSomeThingWithThisNumber:(NSInteger)aNumber 
{ 
    _myPrivateFoo = aNumber; 
} 

@end 

si heredo esta clase a uno nuevo no puedo acceder _myPrivateFoo. ¿Hay otra forma de hacerlo en lugar de la declaración en el archivo de encabezado?

Respuesta

16

En la implementación de la subclase, simplemente coloque la declaración de categoría privada antes de la interfaz @ principal. Esto evitará errores de compilación porque el compilador sabrá que la propiedad existe. Esto es lo que quiero decir con "declaración de categoría privada":

@interface FooBar() 
@property NSInteger myPrivateFoo; 
@end 
+0

Ok, funciona. pero solo con self.myPrivateFoo. ;) Ty! –

+1

Como funciona, debe marcar mi respuesta como correcta. –

+1

Lo siento, soy nuevo. –

Cuestiones relacionadas