2011-11-23 65 views
7

我試圖訪問繼承類上的私有屬性。蘋果給我的命名約定有可能嗎?Objective-C:訪問繼承類中的私有屬性

頁眉:

#import <Foundation/Foundation.h> 

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

實現:

#import "FooBar.h" 


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


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

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

@end 

,如果我繼承這個類到一個新的我無法訪問_myPrivateFoo。有沒有另一種方法來做到這一點,而不是頭文件中的聲明?

回答

16

在子類的實現中,只需在您的主@interface之前放置私有類別聲明即可。這將防止編譯錯誤,因爲編譯器會知道該屬性存在。這就是我的意思是「私人類別聲明」:

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

好吧,它確實有效。但僅限於self.myPrivateFoo。 ;)Ty! –

+1

既然它有效,你應該將我的答案標記爲正確。 –

+1

對不起,我是新的。 –