【问题标题】:Modify object type at runtime在运行时修改对象类型
【发布时间】:2012-12-10 03:25:45
【问题描述】:

在 Objective C 中是否可以在运行时修改对象类型而编译器不会报错?

例如

id object;

在初始化方法中

initWithType:(someEnumType) type

然后根据类型将对象设置为类类型。

如果没有编译器标记对象未声明 someMethod 的错误,如何做到这一点?

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    最常见的方法是使用工厂方法,而不是初始化器:

    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
    

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2011-11-01
      相关资源
      最近更新 更多