2024-11-06 00:54:30
Objective-C作为一门面向对象的编程语言,在Apple的Mac OS X 10.3中未引入垃圾回收功能,但xCode4中已支持自动释放。在xCode4中的自动释放,即ARC(Automatic Reference Counting)机制,无需用户手动释放对象,编译器会在编译期间自动添加类似[NSObject release]的操作,简化了内存管理。
在命名空间机制方面,Objective-C不包括这一机制。开发者需要在类别名称上加上前缀,以避免冲突。在Cocoa编程环境中,所有Mac OS X类别和函数前缀“NS”,如NSObject或NSButton,以区分它们属于Mac OS X核心。使用“NS”是因为这些类别的名称在NeXTSTEP开发时就已经确定。
相比于C,Objective-C虽然基于C,但并不将C的基本类型视为一级对象。这使得Objective-C在使用和C交互时,需要额外的转换和处理。
在多态支持方面,Objective-C与C++不同,不支持运算符多载。然而,与Java相同,它只允许一个类继承一个类,不支持多重继承。Categories和protocols提供了一种实现多重继承好处的方法,同时避免了多重继承带来的许多缺点,如额外执行时间过重和二进制不兼容。
由于Objective-C使用动态运行时类型和函数调用来实现方法调用(甚至系统调用),与C++等其他语言相比,Objective-C在编译时性能优化方面受限。这可能导致Objective-C在性能上低于类似的对象抽象语言。然而,Objective-C的拥护者认为,由于其运行时消耗较大,Objective-C不适合应用于C++或Java常见的底层抽象。
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.