17

I know it's possible to define Class property which responds to a given protocol, like:

Class <MyProtocol> class = [object class];

But is there any way in Objective-C to cast Class type to my class?

Class unknownClass = [object class];
[((MyClass)unknownClass) myMethod]; // How can I cast Class to MyClass?
4

2 回答 2

6

你问的真的没有任何意义。

unknownClass指向一个类对象Class只是一种可以保存指向类对象的任何指针的类型。您通过向类对象发送消息来调用类方法。

Class,例如id,关闭静态类型检查。这意味着编译器不会抱怨对象可能不响应该方法。所以你应该给它发一条消息。“铸造”没有任何意义。如果您收到没有声明此方法的接口的错误,那么您遇到了一个与类型无关的完全不相关的问题;相反,该方法未在任何可见标头中声明。

您在对另一个答案的评论中说“我知道 'unknownClass' 实际上是 MyClass 类型。” 这使您的问题变得更没有意义-为什么不直接使用MyClass呢?而不是unknownClass?喜欢[MyClass myMethod];

于 2013-03-21T19:24:35.490 回答
-2
obj->isa = [NewClass class];

这应该改变一个对象的类。

这样做时,我相信您知道自己在做什么。

于 2013-03-21T17:38:50.460 回答