我想创建一个这样的类层次结构: AbstractBaseClass - > SubClass1,AbstractBaseClass - > subClass2 抽象基类应该有2个实例变量(类型id?)和thters变量的setter和getter ......事实是子类1中的变量需要是tpye NSNumber和NSSTring,而在另一个子类中它们都是NSNumber ...我是否只是继承基类并覆盖setter和getter以将NSNumber转换为超类的id?
答案 0 :(得分: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);
}