如果你知道Objective-C,C难学吗

如果你知道Objective-C,C难学吗,c,objective-c,C,Objective C,我正在通过Stephen Kochan的《在Objective-C 2.0中编程》自学Objective-C,这是一本很棒的书,目前正在第二次阅读,第一次我了解了它的要点,现在它真的开始在第二次中下沉 如果你对Objective-C有一定的了解,那么学习C有多困难?我意识到关于先学哪种语言的争论似乎无穷无尽。我决定选择Objective-C,因为我对Cocoa Mac应用程序/iPhone应用程序感兴趣 旁注:对于那些熟悉花栗鼠物理引擎的人。。。我最终可能开始追求C的原因是它使用C。我需要知道多

我正在通过Stephen Kochan的《在Objective-C 2.0中编程》自学Objective-C,这是一本很棒的书,目前正在第二次阅读,第一次我了解了它的要点,现在它真的开始在第二次中下沉

如果你对Objective-C有一定的了解,那么学习C有多困难?我意识到关于先学哪种语言的争论似乎无穷无尽。我决定选择Objective-C,因为我对Cocoa Mac应用程序/iPhone应用程序感兴趣


旁注:对于那些熟悉花栗鼠物理引擎的人。。。我最终可能开始追求C的原因是它使用C。我需要知道多少C才能充分使用它。我打算将它与Cocos2d一起使用,Cocos2d使用Objective-C

鉴于C是Objective-C的一个严格子集,如果你真的已经完全了解Objective-C,那么你也知道C。

不。我学过C,我来自C

然而,很难找到更新的教程/博客,以下是我使用的一些:

博客(我能找到的唯一更新的博客):
教程:

在学习Objective-C之前,我先学习了C,但两者既有相似之处,也有不同之处。 所有if语句、for&while循环在C中都是相同的,但GTD的使用方式不同。在Objective-C中,你并没有真正接触到指针的全部内容,但这在C中是非常重要的,唯一的方法就是阅读和练习。这可能看起来让人望而生畏,但一旦你掌握了窍门,就没那么糟糕了。函数在语法上和方法以及它们的调用方式上有点不同,所以你也必须学习这一点,但是如果你有一本好书()的话,应该不会那么难。只要读起来练习就行了


我还强烈推荐斯坦福iTunes-U编程范例课程,在你掌握了基本知识之后,它可以帮助你学习很多关于指针的知识!作为一名年轻的程序员,这无疑帮助我很好地掌握了这一切。

基本上,C是客观的—C没有:

  • 任何涉及信息发送的内容(所有[]括号)
  • 任何以@开头的东西(Objective C的人选择在他们添加的所有东西前面使用它,以明确什么是扩展)
  • 此外,Objective-C中还有一些内容,但如果您学习了纯Objective-C,则可能永远不会实际使用。这些内容实际上非常有用,因为有时它们甚至是Objective-C代码中的最佳选择,当您与其他人的代码交互时,您可能会遇到它们。例如:

  • 函数声明语法(无方法)
  • 函数指针
  • 结构
  • malloc()/free()

  • 总的来说,我认为从Objective-C到C可能比从头开始学习C更容易。不过这只是一个猜测,我是第一次学习C的(大约15年前)并且已经编写了近十年的目标C代码。

    C和ObjC有很多重叠,但它们的模式非常不同。特别是内存管理是完全不同的。解决问题的方式有很大不同。ObjC完全依赖于框架并适应框架,而不是碍事在C语言中,您是底层;库大部分时间依赖于您,而不是相反


    也就是说,如果您的目标是编写包含C库的ObjC程序,那么首先学习ObjC肯定是正确的方法,Kochan的书是一个很好的开始(接下来是Hillegass为MacOSX编写的Cocoa编程)使用像Chipmunk或cocos2d这样的引擎可以为你解决C编程中一些较难的细节,并且肯定会帮助你轻松学习。指针是C语言的难点所在,听起来好像它们并不是编程Objective-C的重要组成部分。

    我建议你在这方面获得一些经验为什么?因为Objective-C将您与许多更复杂、更有趣的编程位隔离开来,比如非常手动的内存管理、疯狂的指针等等。因为Objective-C是C的严格超集,有时您可能需要使用这些概念,但如果没有任何C经验,它可能是预处理的我犯了一个错误,在跳到Objective-C之前没有在C上花费足够的时间,所以当我开始研究更复杂的应用程序时,我需要大量阅读C。

    第13章“基础C语言功能”在Stephen Kochan的Obj-C书中,似乎谈论了很多关于C的指针、结构、函数等。我从来没有第一次读过它(有点建议只在需要的时候读)但是,在我第二次阅读它之后,我可能会回到第13章,与Obj-C相比,它应该会让我对C有一个很好的了解。

    OP的问题涉及到对ObjC的适度理解,ObjC代表了一系列与C模式非常不同的模式。你可以多年来开发Cocoa应用程序,而不必调用memcpy().即使是初学C语言的程序员也必须理解memcpy()。我不完全了解Obj-C,对它还是有点陌生,当我开始追求C时,我可能会得到一本书。我正在读的这本书的同一位作者有一本关于C的书。在编程方面,我从来都不喜欢在线教程,只是很难将它们拼凑在一起以获得益处。@Rob Napier:我不确定我会选择memcpy()因为原型必须是已知的C函数。我根本不经常使用它。它出现在我的主目录下1070个C源文件中的13个中,并且至少有3个源于其他人的代码。现在,您是否选择了“malloc()”或“strcpy()”因为我非常喜欢C和Objective-C!昨天也看到了这一点在我看来,指针不是一个很难理解的概念,我