MAC 开发笔记 - Objective-C 语法之selector

MAC平台上一个重要的开发语言是Objective C。Objective C看起来和C有那么一点关系——没错,它是基于C的面向对象的扩展,但是它又不是C++。严格地说,Objective C更象是在C的基础上,Smalltalk的另外一个实现。

Selector是Objective C语法上的一个特色。没有接触过Smalltalk等纯对象语言的朋友可能对Selector的概念感到难以理解,不过如果了解了Selector本身的用途,那么对这个新的概念就不难理解了。

Smalltalk这样比较纯粹的对象语言看重程序应用的灵活性。在基本C/C++的框架内,使得代码在编译前都必须明确所有方法调用和函数调用的类型。一旦编译完成,在代码运行时,想要改变函数调用的类型或方法调用的形式是不可能的。而在Smalltalk的理想世界中,一个纯粹是由对象组成的世界,一切在运行时应该都是可以根据环境的变化而改变的,包括对对象方法的调用的形式和类型。然而灵活的代价是牺牲效率,在计算机处理能力底下的时期,C/C++的效率统治了一切。不过当计算机处理能力获得的成本越来越低时,人们对灵活性的要求也就日益突出了。

Selector就是为了灵活性而存在的语法特性之一。它的目的概括说起来有两个:第一,可以在运行时,动态地改变被调用的对象(类),第二,可以在运行时,动态地改变调用的方法。

以上这段话其实是不准确的。因为对象方法调用是C++中的概念,Objective C中的没有调用的概念,而是对象之间“消息”的传递(messaging)。不过用C++的方式表达,可能更便于大家理解。

要适应Objective C的开发,对C++ 程序员来说需要一个思路转换的过程。Java开发人员可能感觉会稍好点,不过对于动态类型部分也需要继续学习。不过Objective C 还有一个好处是,它的编译器最终还是兼容C++语法的,如果你实在适应不了,那么你也可以尝试在Objective C代码里混入C++的代码。不过这样的代码维护起来可就没那么简单了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值