2011-11-23 12 views
7

Próbuję uzyskać dostęp do właściwości prywatnych na odziedziczonej klasie. Czy to możliwe dzięki temu nazewnictwu, które dał mi jabłko?Objective-C: dostęp do własności prywatnej w odziedziczonej klasie

Header:

#import <Foundation/Foundation.h> 

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

Realizacja:

#import "FooBar.h" 


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


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

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

@end 

jeśli dziedziczą tej klasy do nowego Nie mam dostępu _myPrivateFoo. Czy istnieje inny sposób, aby to zrobić zamiast deklaracji w pliku nagłówkowym?

Odpowiedz

16

Przy implementacji podklasy wystarczy umieścić deklarację kategorii prywatności przed głównym interfejsem @. Zapobiegnie to błędom kompilacji, ponieważ kompilator będzie wiedział, że właściwość istnieje. To właśnie mam na myśli przez "deklarację kategorii prywatnej":

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

OK, to działa. ale tylko z self.myPrivateFoo. ;) Ty! –

+1

Ponieważ działa, należy oznaczyć moją odpowiedź jako prawidłową. –

+1

Przepraszam, jestem nowy. –

Powiązane problemy