我想创建一个类似这样的类层次结构: AbstractBaseClass -> SubClass1,AbstractBaseClass -> subClass2 抽象基类应该有 2 个实例变量(类型 id?)以及 thou 变量的 setter 和 getter ...问题是变量在子类 1 中需要是 tpye NSNumber 和 NSSTring ,而在另一个子类中两者都将是 NSNumber ...我是否只是继承基类并覆盖 setter 和 getter 以将 NSNumber 转换为超类的 id?
问问题
170 次
1 回答
3
如果您id
在基类中创建类型属性,您应该能够使用它们来存储任何类型的对象,而无需在子类中做任何额外的事情。
有点奇怪的例子::)
// Base class .h
@interface BaseClass : NSObject
@property (nonatomic, strong) id something;
@end
// Sub class .m
- (id)init {
self = [super init];
if (self) {
BOOL test = (random() > random());
if (test) {
[self setValue:@"A string" forKey:@"something"];
} else {
[self setValue:@42 forKey:@"something"];
}
}
return self;
}
// Caller
for (int i = 0; i < 5; i++) {
SubClass *sub = [[SubClass alloc] init];
NSLog(@"Subclass result: %@", sub.something);
}
于 2012-11-17T14:24:00.760 回答