c - 混合使用 Objective-C 和 C 有哪些陷阱?

标签 c objective-c

冒着过度简化的风险,我担心可能会变得非常复杂,混合使用 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 函数使用的任何手动malloced 内存。如果确实已完成,您会希望您的 Objective-C 类在 dealloc 上整理该内存。

除此之外,清除所有关于 C 的引用并玩得开心!

关于c - 混合使用 Objective-C 和 C 有哪些陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/715219/

相关文章:

c - 仅访问结构的某些成员而不是所有成员

c - C中的空语句执行时间

c - 如何在 C 中将 wchar_t 转换为 BYTE*

c - 如何在 c 用户定义函数中返回 "struct"数据类型?

objective-c - 导入语句错误 "expected "FILENAME“或 <FILENAME>”

ios - 无论如何,在UIDatePicker中只显示小时和分钟吗?

objective-c - 在 iOS 应用程序中使用 STL

ios - 键值观察外观类上的静态 NSDictionary

objective-c - 用于 Objective-C 和 iOS 开发(XCode 除外)的 IDE

c - 工作日查找器奇怪的行为