• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Objective-C和Swift实现单例的几种方式发布时间:2022-07-12
下一篇:
CCLuaObjcBridge-Lua与Objective-C互操作的简单解决方案发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap