学习Objective-C和Cocoa的建议

时间:2010-12-09 18:44:42

标签: objective-c cocoa

我想学习objective-c和Cocoa。我想问你是否可以推荐我学习那种语言和cocoa框架的任何东西(适用于Mac OS X开发)。我目前知道PHP。来自PHP的Obj-C难以学习吗? PD:英语不是第一语言,我的水平相当不错。用我的英语知识学习难吗?

2 个答案:

答案 0 :(得分:2)

出色!听到你想学习一些新的编程语言真是鼓舞人心。

Objective-C是一种有趣的语言,因为它是ANSI-C的超集,包括Message Passing.您可以考虑首先学习C,因为它将帮助您学习一些与PHP无关的计算机科学基础知识,一旦你了解C,Objective C就容易理解了。

另外,我发现在学习新语言时,理解它们之间的一些差异非常有帮助。 (如果您已经了解以下信息或者它太基本了,请原谅我!)

  • PHP是一种解释型语言。因此,每次运行PHP脚本时,php二进制文件或CGI可能决定如何处理您在脚本中进行的每个函数调用或语句。另一方面,C是一种编译语言。这意味着首先编写C代码,然后将其“编译”为汇编语言(或多或少是机器代码的书面语言表示),然后将其汇编为机器代码(1和0)。

    谢天谢地,您不必自己做这些步骤!编译器和汇编器执行这些操作。关键是C代码最终会转换为二进制应用程序,该应用程序可以直接在计算机的处理器上运行而无需解释。

  • 您需要了解如何自行管理内存和数据结构。在PHP中,会自动为您分配变量和结构的内存。在C或Objective-C中,您的应用程序需要使用函数调用或消息来完成此操作。此外,当您的应用程序不再需要变量或数据结构时,您将需要处理内存。

  • PHP是所谓的“松散”或“动态”类型的语言,这意味着在脚本运行时检查变量的类型(为了将一种类型转换为另一种类型)。

    另一方面,C和Objective-C(大部分)是静态类型的,这意味着在编译应用程序时会检查类型转换。

  • 最后,Objective-C也有消息传递,类似于函数调用,尽管消息总是发送给对象。

还有许多其他差异,但这些是主要的差别。随意提问。

此外,对于其他人,请随时指出我可能错过的任何错误或事情。

答案 1 :(得分:1)

除了Tom的回答,我想说你需要很好地理解内存分配和指针。这些是来自PHP的新概念。

我建议学习和练习从简单到复杂的不同层次的内存管理,我会使用其他语言作为从PHP到Objective-C的桥梁:

  • 堆栈分配(C)
  • 原始堆分配:malloc()/ free()(C)
  • 智能堆分配:C ++ new / delete(C ++)
  • 基于引用的自动内存管理(C#)
  • 引用计数和垃圾收集(Objective-C)

工具处理该内存:

  • 值类型,指针和数组(C)
  • 指向对象的指针(C ++)
  • 引用(C ++和C#)

这将帮助您理解内存块与指向该内存块的指针或引用之间的区别。

祝你好运