c++ - 从 C++ 调用 Objective-C 类方法

标签 c++ objective-c

我在从 C++ 文件调用 Objective-C 类方法时遇到了一些问题。示例:

在我的 .h 中:

@interface MyClass : NSObject {
}
+ (void)myMethod:(NSString *)str;

在我的 .m 中:

+ (void) myMethod:(NSString *)str { ... }

在我的.cpp 中:

??

既然没有类实例,你怎么能调用 myMethod 呢?它本质上是静态的?

谢谢

最佳答案

C++ 中的对象与 Objective-C 中的对象不兼容。您不能简单地从 C++ 调用 Objective-C 方法。

但是有一些解决方案:

  1. 使用 Objective-C++。将您的 .cpp 重命名为 .mm,然后您可以在 C++ 代码中使用 Objective-C 语法:[FlurryAnalytics myMethod: @"foo"];

  2. 直接调用 Objective-C 运行时系统。我不会告诉你怎么做,因为我真的认为你不应该,事实上你也不想。

  3. 编写纯 C 接口(interface)。也就是说,在某些 .m 文件中,定义 void myFunction(const char *str) { ... } 并从 C++ 调用它。您可以找到此 here 的示例.

关于c++ - 从 C++ 调用 Objective-C 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851789/

相关文章:

iphone - Xcode:在设置断点时查找变量值

c++ - mipsel-linux-objdump 无法识别 mipsel-linux-g++ 对象

c++ - 关于散列图和术语 C++ 的一些确认

c++ - 使用 unique_ptr 作为参数在类上调用方法是否合法?

c++ - 如何使用所有标点符号而不是空格来分隔该字符串?

ios - 为什么从 MPMediaPicker (iOS) 返回 (null)

c++ - 在 D 中实现类并在 C++ 中实例化/lifetimetrack

IOS 为 NSURL 创建实用程序类

iphone - 使用日期选择器时获取错误的日期

objective-c - 如何在 Objective C 中将子窗口/面板附加到父窗口