冒着过度简化的风险,我担心可能会变得非常复杂,混合使用 C 和 Objective-C 时我应该注意什么?
编辑:澄清一下,我以前从未使用过 C,我正在通过 Cocoa 学习 Objective-C。我还使用了 C 语言的 Chipmunk Dynamics 引擎。
最佳答案
我会反过来说:您可能会冒着将简单得离谱的事情过度复杂化的风险:-)
好吧,我有点油嘴滑舌。正如其他人所指出的那样,Objective-C 实际上只是 C 的最小语言扩展集。当您编写 Objective-C 代码时,您实际上是在编写 C。您甚至可以访问 Objective-C 运行时支持的内部机制使用作为语言一部分的一些方便的 C 函数(不......我不建议你真的这样做,除非你真的知道你在做什么)。
关于我唯一一次遇到稍微棘手的时刻是当我想将 Objective-C 实例方法作为回调传递给 C 函数时。比方说,我正在使用一个纯 C 跨平台库,它具有接受回调的函数。我可能会从对象实例中调用该函数来处理一些数据,然后希望该 C 函数在完成时调用我的实例 BACK,或者作为获取额外输入等的一部分(C 中的常见范例)。这可以通过时髦的函数包装和我见过的其他一些创造性方法来完成,如果您需要这样做,谷歌搜索“用于 c 回调的 objective-c 方法”或类似的东西将为您提供 cargo 。
唯一的其他建议是确保您的对象适本地管理它们创建供 C 函数使用的任何手动malloc
ed 内存。如果确实已完成,您会希望您的 Objective-C 类在 dealloc 上整理该内存。
除此之外,清除所有关于 C 的引用并玩得开心!
关于c - 混合使用 Objective-C 和 C 有哪些陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/715219/