我在从 C++ 文件调用 Objective-C 类方法时遇到了一些问题。示例:
在我的 .h 中:
@interface MyClass : NSObject {
}
+ (void)myMethod:(NSString *)str;
在我的 .m 中:
+ (void) myMethod:(NSString *)str { ... }
在我的.cpp 中:
??
既然没有类实例,你怎么能调用 myMethod 呢?它本质上是静态的?
谢谢
最佳答案
C++ 中的对象与 Objective-C 中的对象不兼容。您不能简单地从 C++ 调用 Objective-C 方法。
但是有一些解决方案:
使用 Objective-C++。将您的
.cpp
重命名为.mm
,然后您可以在 C++ 代码中使用 Objective-C 语法:[FlurryAnalytics myMethod: @"foo"];
直接调用 Objective-C 运行时系统。我不会告诉你怎么做,因为我真的认为你不应该,事实上你也不想。
编写纯 C 接口(interface)。也就是说,在某些
.m
文件中,定义void myFunction(const char *str) { ... }
并从 C++ 调用它。您可以找到此 here 的示例.
关于c++ - 从 C++ 调用 Objective-C 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851789/