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

有可能过于简单化我担心的事情可能会非常复杂,在混合使用C和Objective-C时我应该注意什么?

编辑:只是为了澄清,我以前从未使用过C,我正在通过Cocoa学习Objective-C.我也在使用Chipmunk Dynamics引擎,它是C.

解决方法

我反过来说:你可能冒着过于复杂的过于复杂的风险:-)

好吧,我有点油腻.正如其他人指出的那样,Objective-C实际上只是C语言扩展的最小集合.当您编写Objective-C代码时,您实际上正在编写C.您甚至可以访问Objective-C运行时支持的内部机制使用一些方便的C函数作为语言的一部分(不……我不建议你实际做到这一点,除非你真的知道你在做什么).

大约有一次我曾经遇到过一些轻微棘手的时刻,那就是我希望将Objective-C实例方法作为回调函数传递给C函数.比如说,我正在使用一个纯C跨平台库,它具有接受回调的功能.我可以在一个对象实例中调用函数来处理一些数据,然后希望该C函数在完成时调用我的实例BACK,或者作为获取额外输入等的一部分(C中的常见范例).这可以通过时髦的功能包装和我见过的一些其他创造性方法来完成,如果你需要使用Google搜索“c-callback的客观c方法”或类似的东西,它会给你带来货物.

另一个建议是确保您的对象适当地管理它们为C函数使用而创建的任何手动malloced内存.你会希望你的objective-c类在dealloc上整理那个内存,如果它确实已经完成了.

除此之外,灰尘消除C上的任何参考,玩得开心!

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录<future>future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...