我知道可以定义响应给定协议(protocol)的 Class 属性,例如:
Class <MyProtocol> class = [object class];
但是在 Objective-C 中有什么方法可以将类类型转换为我的类吗?
Class unknownClass = [object class];
[((MyClass)unknownClass) myMethod]; // How can I cast Class to MyClass?
最佳答案
你问的没有任何意义。
unknownClass
指向一个类对象。 Class
只是一种可以保存指向类对象的任何指针的类型。您可以通过向类对象发送消息来调用类方法。
Class
和 id
一样,关闭静态类型检查。这意味着编译器不会提示对象可能不会响应该方法。所以你应该只向它发送一条消息。 “类型转换”没有任何意义。如果您遇到没有声明此方法的接口(interface)的错误,那么您将遇到一个与类型无关的完全不相关的问题;相反,该方法未在任何可见 header 中声明。
您在对另一个答案的评论中说“我知道‘unknownClass’实际上是 MyClass 类型。”这让您的问题变得更没有意义 -- 为什么不直接使用 MyClass
? 而不是 unknownClass
?像 [MyClass myMethod];
关于objective-c - 类型转换类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553846/