【发布时间】:2009-11-29 20:45:05
【问题描述】:
我想以这种方式创建一个 Class 对象: Class c = [Class classNamed:[NSString stringWithFormat:@"%sview", [_shapeClass name]]];
我的问题是这个错误消息:“错误:'Class'之前的预期表达式”。 你怎么看?有什么问题?感谢您的回复。
编辑: 我想在开关盒中执行此操作。
【问题讨论】:
标签: objective-c
我想以这种方式创建一个 Class 对象: Class c = [Class classNamed:[NSString stringWithFormat:@"%sview", [_shapeClass name]]];
我的问题是这个错误消息:“错误:'Class'之前的预期表达式”。 你怎么看?有什么问题?感谢您的回复。
编辑: 我想在开关盒中执行此操作。
【问题讨论】:
标签: objective-c
问题是没有 Class 这样的类(顺便说一句,这个不存在的类也不响应classNamed:)。
不清楚您是要创建一个类还是获得一个引用到一个类。如果是后者,您需要函数NSClassFromString()。如果你想在运行时动态创建一个类,你需要使用Objective-C runtime functions来创建一个类,注册它并根据需要添加方法。
【讨论】:
没有名为“Class”的类。 “类”是指向类对象的指针的类型。不管怎样,NSBundle 中有一个classNamed: 方法,这可能就是你要找的:
Class c = [[NSBundle mainBundle] classNamed:[NSString stringWithFormat:@"%sview", [_shapeClass name]]];
如果你知道类已经加载,你也可以这样获取:
Class c = NSClassFromString([NSString stringWithFormat:@"%sview", [_shapeClass name]]);
【讨论】:
[NSBundle mainBundle] 中的类什么时候不会被加载?