菜单
  

    2.2    Objective-C
    2.2.1    简介
    Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。1980年代初布莱德•确斯(Brad Cox)在其公司Stepstone发明Objective-C。他对软件设计和编程里的真实可用度问题十分关心。Objective-C最主要的描述是他1986年出版的Object Oriented Programming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.
    Objective-C用途:编写iOS操作系统(如:iPhone、iPod touch、iPad 等苹果移动终端设备 )应用程序的利器。 Objective-C的流行当归功于iPhone的成功,因为Objective-C一直被用于编写iPhone应用程序。
    Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
    Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的死亡时间,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入这个功能。
    另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有NS作为前缀,例如NSObject或NSButton来清楚分辨它们属于Mac OS X核心;使用NS是由于这些类别的名称在NeXTSTEP开发时定下。
    虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。

    2.2.2    Objective-C同C++的异同
    和C++不同,Objective-C不支持运算子重载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
    Objective-C和C++的比较
    单一继承:
    Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
    动态:
    Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
    C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
    在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。 而Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr67那里就无法通过。

    2.2.3    优缺点
    Apple在其Mac OS X 10.3中仍未引入垃圾回收这个功能。不过令人欣慰的是在Apple发布的Xcode4中已经支持自动释放啦,我不敢冒昧地说那是垃圾回收,因为两者机制不同,在Xcode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,是不需要用户手动去Release一个对象,而是在编译期间,编译器会自动帮你添加那些以前你经常写的[NSObject release]。
    另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分别它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。
  1. 上一篇:ActionScriptRPG游戏设计+文献综述
  2. 下一篇:ASP.net订单管理系统设计+文献综述
  1. Objective-C移动端借还书系统的设计与实现

  2. Android手机的一个简易商城客户端设计

  3. android手机端远程管理助手的设计+源代码

  4. android手机无线点餐系统设计

  5. 智能手机语音加密系统的设计与研究

  6. Android手机短信分类设计与实现

  7. 基于android的手机商城设计与实现

  8. 电站锅炉暖风器设计任务书

  9. 大众媒体对公共政策制定的影响

  10. 乳业同业并购式全产业链...

  11. 酸性水汽提装置总汽提塔设计+CAD图纸

  12. 杂拟谷盗体内共生菌沃尔...

  13. 中考体育项目与体育教学合理结合的研究

  14. 十二层带中心支撑钢结构...

  15. 当代大学生慈善意识研究+文献综述

  16. java+mysql车辆管理系统的设计+源代码

  17. 河岸冲刷和泥沙淤积的监测国内外研究现状

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回