0

我想创建一个类似这样的类层次结构: AbstractBaseClass -> SubClass1,AbstractBaseClass -> subClass2 抽象基类应该有 2 个实例变量(类型 id?)以及 thou 变量的 setter 和 getter ...问题是变量在子类 1 中需要是 tpye NSNumber 和 NSSTring ,而在另一个子类中两者都将是 NSNumber ...我是否只是继承基类并覆盖 setter 和 getter 以将 NSNumber 转换为超类的 id?

4

1 回答 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 回答