有没有一种好的/最好的方法来扩展Objective-C中的嵌套类?

| 有时,框架对象将帮助程序类接口放在* .m文件中,例如: Foo.m:
@interface HelperObject : NSObject
/*...*/
@end
@implementation HelperObject
/*...*/
@end

@implementation Foo
/*...*/
@end
如果我想扩展Foo,例如使用类别,是否也可以扩展HelperObject?更一般地说,这样做违反封装吗?我应该尝试在不扩展HelperObject的情况下扩展类的功能吗?     
已邀请:
        
Foo
的呼叫者对
HelperObject
一无所知-通常,他们甚至都不知道它的存在。因此,不能将它子类化到另一个文件中是不安全或无效的。     
        您可以使用类别来扩展Helper或Foo,但是不能使用单个类别来两者都扩展。考虑到Helper和Foo之间的关系(其中Helper实际上是一个不可见的帮助程序类),我认为允许这样做没有太大的价值。 通常,Objective-C不支持类或类别的多重继承。 但是,它确实支持通过协议对接口的多重继承。 也就是说,您可以在declare3ѭ文件中声明一个由Helper和Foo都实现的协议。     
        目标C不允许嵌套类(例如,不同于Java或C ++)。 您可以使用聚合来扩展类功能。如果要隐藏某些内容,则可以使用Pimpl惯用语,但是在ObjC中没有必要,因为您可以轻松地将其替换为category。 编辑:如果要使用类别扩展HelperObject对象,则应在要使用该函数的文件中声明它(以便可见)。     

要回复问题请先登录注册