我是Objective C的新手,我对这个概念感到困惑。
以下方法应该创建作为参数传递的类的实例并编辑实例的变量。
- (void) createObject:(Class)objecttype atPoint: (CGPoint)position {
if ([objecttype isSubclassOfClass:[GameObject class]]){
id theobject = [[objecttype alloc] init];
theobject.x = position.x; //error
theobject.y = position.y; //error
}
}
我收到上面显示的错误消息:Property 'x' not found on object of type '__strong id'
看起来应该很简单,但我不明白什么是错的。
答案 0 :(得分:6)
点表示法不会调用id
类型的对象上的方法。
将该分配行更改为:
GameObject *theobject = (GameObject*)[[objecttype alloc] init];
请注意,由于isSubclassOfClass:
条件,上述演员表是完全正确的。