2011-11-23 69 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

对不起,我是新的。 –