Objective-C:访问继承类中的私有属性

Posted

技术标签:

【中文标题】Objective-C:访问继承类中的私有属性【英文标题】:Objective-C: access private propertys in a inherited class 【发布时间】:2012-01-05 04:09:53 【问题描述】:

我正在尝试访问继承类的私有属性。苹果给我的命名约定有可能吗?

标题:

#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。除了头文件中的声明,还有其他方法吗?

【问题讨论】:

【参考方案1】:

在子类的实现中,只需将私有类别声明放在主@interface 之前。这将防止编译错误,因为编译器将知道该属性存在。这就是我所说的“私有类别声明”:

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

【讨论】:

以上是关于Objective-C:访问继承类中的私有属性的主要内容,如果未能解决你的问题,请参考以下文章

如何访问派生类中的私有集属性[重复]

继承的基本概念

接口3

python中的继承关系详解

python中的继承关系详解

第六周课程总结&试验报告