Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
混合使用Objective-C和C的陷阱和陷阱是什么?_C_Objective C - Fatal编程技术网

混合使用Objective-C和C的陷阱和陷阱是什么?

混合使用Objective-C和C的陷阱和陷阱是什么?,c,objective-c,C,Objective C,冒着过分简化的风险,我担心有些事情可能会复杂得可笑,当混合C和Objective-C时,我应该注意什么 编辑:澄清一下,我以前从未使用过C语言,我正在通过Cocoa学习Objective-C。我还使用了花栗鼠动力引擎,它是C。你不能“混合”C和Objective-C:Objective-C是C的超集 现在,C++和Objul-C另一方面… < P>我把它反过来说:你可能冒着使复杂的事情变得过于复杂的危险:-) 好吧,我有点油嘴滑舌。正如其他人所指出的,Objective-C实际上只是C语言的一个

冒着过分简化的风险,我担心有些事情可能会复杂得可笑,当混合C和Objective-C时,我应该注意什么


编辑:澄清一下,我以前从未使用过C语言,我正在通过Cocoa学习Objective-C。我还使用了花栗鼠动力引擎,它是C。

你不能“混合”C和Objective-C:Objective-C是C的超集


现在,C++和Objul-C另一方面…

< P>我把它反过来说:你可能冒着使复杂的事情变得过于复杂的危险:-) 好吧,我有点油嘴滑舌。正如其他人所指出的,Objective-C实际上只是C语言的一个最小扩展集。当您编写Objective-C代码时,实际上就是在编写C。您甚至可以使用一些作为语言一部分的方便C函数访问Objective-C运行时支持的内部机制(不……我不建议你真的这样做,除非你真的知道自己在做什么)

大约我唯一一次有点棘手的时刻是当我想将Objective-C实例方法作为回调传递给C函数时。例如,我使用的是一个纯C跨平台库,其中的函数可以接受回调。我可能从对象实例中调用该函数来处理一些数据,然后需要C函数来调用我的实例,或者作为获取额外输入等的一部分(C中的一个常见范例)。这可以通过funky函数包装和我见过的一些其他创造性方法来实现,如果你需要的话,可以通过谷歌搜索“objective-C method for C callback”或类似的方法来实现

唯一的另一个建议是确保您的对象适当地管理它们为C函数使用而创建的任何手动
malloc
ed内存。如果确实完成了,您将希望您的objective-C类在dealloc上整理该内存


除此之外,掸掉C上的任何引用,玩得开心!Objective C是C的超集,所以它不应该冲突


除此之外,正如所指出的,纯C有不同的约定(显然,因为没有内置的机制)来处理OO编程使用函数指针。

我应该如何改写这个问题?这不是重写的问题。Objective-C包含C的所有内容,因此根本没有混合。我明白了,但请记住,我对C的任何方面都是新手,学习cocoa的重点是Objective-C。然而,花栗鼠是用纯C编写的。因此,我已经遇到了一个问题,即结构是什么不是对象,即使对一个新手来说,一开始看起来是一样的。假设你在C语言中有一些你想使用的东西,并且想把它连接到Objective-C框架中。