gpt4 book ai didi

Objective-C 继承应该改变父类(super class)中的变量

转载 作者:行者123 更新时间:2023-11-28 20:27:38 25 4
gpt4 key购买 nike

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

最佳答案

如果您在基类中创建 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);
}

关于Objective-C 继承应该改变父类(super class)中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13431308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com