在 Objective C 中是否可以在运行时修改对象类型而编译器不会抱怨?
例如
id object;
在初始化方法中
initWithType:(someEnumType) type
然后根据类型将对象设置为类类型。
如果没有编译器标记对象未声明 someMethod 的错误,如何做到这一点?
在 Objective C 中是否可以在运行时修改对象类型而编译器不会抱怨?
例如
id object;
在初始化方法中
initWithType:(someEnumType) type
然后根据类型将对象设置为类类型。
如果没有编译器标记对象未声明 someMethod 的错误,如何做到这一点?
最常见的方法是在工厂方法中,而不是在初始化器中:
typedef enum {
etString,
etNumber
} EnumType;
@implementation MyFactory
+(id)makeNewObjectWithType:(EnumType)et {
id res;
switch (et) {
case etString:
res = [NSString string];
break;
case etNumber:
res = [NSNumber numberWithInt:12345];
break;
default:
res = nil;
break;
}
return res;
}
@end