2011-11-23 20 views
7

Sto tentando di accedere a proprietà private in una classe ereditata. E 'possibile con quella convenzione di denominazione che mi ha dato la mela?Objective-C: accesso a proprietà private in una classe ereditata

Intestazione:

#import <Foundation/Foundation.h> 

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

Implementazione:

#import "FooBar.h" 


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


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

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

@end 

se ho ereditato questa classe per uno nuovo non posso accedere _myPrivateFoo. C'è un altro modo per farlo al posto della dichiarazione nel file di intestazione?

risposta

16

Nell'implementazione della sottoclasse, è sufficiente inserire la dichiarazione di categoria privata prima dell'interfaccia principale @. Ciò impedirà errori di compilazione perché il compilatore saprà che la proprietà esiste. Questo è ciò che intendo per "la dichiarazione di categoria privata":

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

Ok, funziona. ma solo con self.myPrivateFoo. ;) Ty! –

+1

Dato che funziona, dovresti contrassegnare la mia risposta come corretta. –

+1

Scusa, sono nuovo. –

Problemi correlati