objective-c - 类型转换类类型

标签 objective-c class casting

我知道可以定义响应给定协议(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 只是一种可以保存指向类对象的任何指针的类型。您可以通过向类对象发送消息来调用类方法。

Classid 一样,关闭静态类型检查。这意味着编译器不会提示对象可能不会响应该方法。所以你应该只向它发送一条消息。 “类型转换”没有任何意义。如果您遇到没有声明此方法的接口(interface)的错误,那么您将遇到一个与类型无关的完全不相关的问题;相反,该方法未在任何可见 header 中声明。

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

关于objective-c - 类型转换类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15553846/

相关文章:

objective-c - 如何移动QTMovie的光标?

objective-c - 如何在 cocoa 中对 pdf 文档执行索引

objective-c - 如何将带有变量的 NSString 分配给 nsstring 对象?

java - java中如何访问另一个类的Arraylist

c++ - 如何在 C++ 中实现对私有(private)基类的转换

ios - objc_msgSend() 调度表

java - 使用 For 循环生成多个字符串

C# - 创建 EnumRandomizer 类

c++ - 使用这种智能指针转换安全吗?

c - 我是否要转换 malloc 的结果?