0

次のようなクラス階層を作成したい:AbstractBaseClass-> SubClass1、AbstractBaseClass-> subClass2抽象基本クラスには2つのインスタンス変数(タイプID?)と、千の変数のセッターとゲッターが必要です...サブクラス1ではtpyeNSNumberとNSSTringである必要があり、他のサブクラスでは両方ともNSNumberになります...基本クラスを継承し、セッターとゲッターを上書きして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 に答える