问题可能已经问过了,但我想知道 iPhone 的框架是否仅限于 Objective-C 使用,还是也可以从 C/C++ 代码访问?
例如,是否可以通过 C/C++ 代码使用标准 iPhone 控件? NSArray、NSSet 等标准类是否可以从 C/C++ 代码访问?
如果是,任何人都可以提供一些示例的链接吗?
最佳答案
您可以将 Objective C 与 C++ 混合使用。只需将您的源文件重命名为 .mm
。
一些基础类如 NSArray 和 NSSet 是通向 CoreFoundation 对象如 CFArray 和 CFSet 的免费桥梁。后者是一个纯 C 库,您可以在没有 ObjC 的情况下使用。
UIKit 是一个纯 Objective-C 框架。您可以将 UIKit 与 C 和 C++ 一起使用,因为 Objective-C 运行时可以从纯 C 函数访问,例如 objc_msgSend
,例如
id UIView = objc_getClass("UIView");
SEL alloc = sel_registerName("alloc");
id view = objc_msgSend(UIView, alloc);
// ...
但它并不可靠,例如
objc_msgSend(view, sel_registerName("setAlpha:"), 0.4);
不会做你想做的事。
您可以隔离 UI 部分并只为该部分编写 ObjC。在 UI 和后端之间创建一个 C 接口(interface),您可以使用 C++ 或任何(允许的)语言。
关于c++ - 从 C/C++ 使用 UIKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3038693/