是否可以处理具有不同实例变量类型的类?假设我有一个有两个int实例变量的类,让我们调用它们:
@interface ClassA: NSObject {
int x;
int y;
}
@end
同时我想扩展它,使它有可能在这样的实例变量上处理不同的类型:
@interface ClassB: ClassA {
double x;
double y;
}
这甚至可能吗?
答案 0 :(得分:1)
我很确定你不能这样做有两个原因:
int x, double x
)。如果您不想为这些用例创建单独的类,那么抽象的超类可能会起作用。如果我更多关于你想要解决的问题,我将能够在这方面提供更多帮助。
您真正想要的是参数多态,Objective-C不支持。某些Cocoa类,如NSNumber
系列,使用具有许多具体子类的抽象超类,可能具有不同的实例变量布局(就像您在问题中描述的那样)。然后,在抽象和特定之间适当地划分逻辑。这是Cocoa的类集群设计模式,它是对C ++和Haskell等语言的参数多态性的一种削弱的特殊答案。
答案 1 :(得分:1)
没有。您收到编译时警告“重复成员'x'”和“重复成员'y'”。