如何在Objective-C中利用* C *?

时间:2010-11-19 14:19:39

标签: objective-c c api

在过去的几个月里,我一直在全职开展iPhone开发。

以前只有OOP经验,我非常依赖Apple的API,虽然我必须考虑到它的严重性,但这让我编写的代码看起来像是一个奇怪的组合带有附加样板的ruby / smalltalk 。

所以我想我错过了,订购了K& R.然而,我想知道我将学到什么,可以特别在iOS工作中得到充分利用,而不是与设备的API和整个OO pardadigm作斗争?

5 个答案:

答案 0 :(得分:3)

较低级别的API主要是直接的C,也许你想探索它们?例如Quartz 2D有一个C API。

答案 1 :(得分:1)

Objective-C是C的超集。您可以混合使用Objective-C和C函数调用,语句等。

因此,例如,如果您更喜欢Posix套接字到NSSocketPort,您可以在任何地方混合使用C套接字函数。或者,如果你想让它更加面向对象,你可以在一个Objective-C函数调用中包装C语句,这会将你的C代码与其余的Objective-C代码隔离开来。

答案 2 :(得分:0)

可能有助于您理解C和Objective-C之间关系的东西是为某些C代码创建一个Objective-C包装器。我建议编写一个用Lua编写的简单iPhone应用程序。这应该是一个真正看C的项目。

答案 3 :(得分:0)

不学习C不会遗漏任何东西。

答案 4 :(得分:0)

我几乎同意@jeff,除了我不明白为什么有这么多初学Objective C程序员直接使用iPhone的东西,因为他们可以运行一个麻烦少得多的Mac应用程序并稍后转换它。

但是,是的,购买K& R的副本将是一个非常好的主意(如果您能负担得起,还可以获得C90或C99标准的副本)。事实上,我有一本关于iOS游戏的书,建议直接使用vanilla C来获取许多低级别的东西,以便为了性能而减少消息传递开销。从本质上讲,你没有做任何你不应该通过使用C函数“做”的事情; C库仍然在那里使用,所以你没有做任何特别奇怪或kludgy的事情。