【IT168 技术】作为一个 Objective-C的 coder,我总能听到一部分人在这门语言上抱怨有很多问题。他们总在想快速学习这门语言来写一个 App 出来,但他们也总是联想到 Objective-C看上去实在太难了或者在想这些语法符号都是神马玩意?不错,他们问得非常好,所以本人也解释一下为什么很多程序员相比较学习 Ruby 或者 Java 很容易,但在决定开发 iOS 或者 OS X 应用时会那么犹豫。
语法:
首先我们谈谈神马叫做编程语言,编程语言是一种让人们能读懂并且能够展现程序的执行行为的语言,包括语法(正确的表达式以及状态机的使用规则)以及语义(如何去组织这些表达式以及状态机以一种有意义的方式去完成我们的目标)
大部分编程语言都是基于C语法风格的,也就是我们常说的点语法,依靠小数点符号来调用方法或者获取类的成员(当然了,在C语言中类被替代为结构体)。它们通常都是自己实现类的定义(注意在这里 Java 与 C# 和 C++ 有稍微一点不一样),但无论如何这些语言的具体细节都是一样的。当我们接触一个新的编程语言时,我们当然很乐意看到新语言的语法是我们似曾相识的。毕竟大部分程序员都了解C语言的语法。
然而 Objective-C压根就不是C语法风格的编程语言。它与我们熟悉的语言语法区别太大以至于大部分程序员根本看不懂这些 Objective-C代码是神马东西。
甚至其他一些像 Python 或者 Ruby 这样的“奇怪”的语言都能让人看个大概出来,毕竟 Python 与 Ruby 至少还是点语法风格的,使用点语法来调用方法以及获取类的成员。相反它们缺乏分支结构并不会长时间影响程序员的理解,毕竟这两种语言也有自己的方式来完成同样的目标。
下面我们来介绍一下 Objective-C语言: 这里我会拿另一个 OOP 语言来与它进行比较
我想这里大家肯定还不会有什么问题,来看看这个:
好了好了,我想肯定有部分人想问一大堆问题了。但这还不是最糟糕的,我们接着来看一个更强悍的:
▲
一般到了这里,我想大家都头都大了几圈。
这到底是个神马情形?这么多分号!太恐怖了!接着会冒出一大堆问题:这到底调用的是神马方法?又是怎么调用的?是 performAction 吗还是别的东西?方法重载该如何做?哦,我的天!
最好先忘了我们熟悉的方法调用。实际上,当你看到 performAction:withTwoParameters:时,我们其实在谈论消息而不是方法。当你能这么理解时问题就好办多了。
实际上 Objective-C是很严格的C语言的超集。而与流行的编程语言风格又差距太大。作为C语言的超集,它增加了很多东西,我们将简单看看它到底增加了什么复杂的东西。