您的位置:首页 > 其它

objc@interface的设计:隐藏继承关系中的私有接口

2014-06-11 22:50 253 查看


隐藏继承关系中的私有接口

感谢
@像条狗在飞
在留言中提出的问题,问题大概可以总结为:当子类需要使用父类的一个私有属性(方法)时,需要把这个属性(方法)放到父类的header中,但暴露给子类的同时暴露给了外部调用者,如何解决?

我的方案是:建立一个
私有header
,使用
类扩展
定义父类需要暴露给子类的属性(方法),然后在各自的
.m
文件中引用,如:

有Father类和Son类,继承关系,可以考虑建一个如
FatherPrivate.h
的私有header:
// FatherPrivate.h
@interface Father ()
@property (nonatomic, copy) NSString *privateThingSonNeed;
- (void)privateMethodNeedsSonOverride;
@end

同时在Father.m和Son.m中同时import这个私有header,这样,Father和Son内部对于定义的属性和方法都是透明的,而对外部是隐藏的(因为两个类的header中都没有import这个私有header)

转自:objc@interface的设计哲学与设计技巧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐