Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。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 等苹果移动终端设备 )应用程序和Mac OS X操作系统应用程序的利器。 Objective-C的流行当归功于iPhone的成功,因为Objective-C被用于编写iPhone应用程序。
ObJC是非常实际的语言,它是一个用C写成,很小的一个运行库,只会使应用程序的尺寸增加很小。ObJC完全兼容标准C语言(C++兼容C语言只是在大部分语法上)而在此基础上增加了面向对象编程语言的特性以及smalltalk消息机制。
ObJC为何不支持垃圾回收机制,因为在smalltalk回收时有漫长的死亡时间,容易令整个系统市区功用,ObJC为避免此问题才不拥有这个功能,虽说某些第三方软件加入了垃圾回收机制这个功能,但是Apple在其Mac OS X 10.3中仍未使用这个功能。
和C++不同,Objective-C不支持运算子重载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
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开发时定下。虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。
和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。 由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:内联函数、常数传播、交互式优化、纯量取代与聚集等)。这使得Obj-C性能劣于类似的对象抽象语言(如C++)。不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象。编译器:我用的就是Xcode 6.01/5.11(愿意用哪个就用哪个吧,每个版本都有自己的优势。)
如果你是第一次使用Xcode,那么你就需要创建一个新的Xcode文件(Create a new Xcode project 选项) 选择 Command Line Tool 建立一个程序或者文件夹都是可以的 接下来就是创建工程的名字(Product Name)要符合建项的命名标准,然后是组织名(Organization Name) 组织名一般的命名规则是你的公司或者团队的域名的反向 比如说你的公司的域名是www.example.com,那么建议你的组织名就起为:com.example.接下来就是组织标识符(Organization identifier),命名规则就是你喜欢就好。language当然要选择ObJC啦。一路next下去,我们基本上就已经创建好所需的工程了,现在图示的就是一些基本信息,上面有你的系统信息,还有一些工程选项BALABALALA,笔者现在英语水平有限,一大部也是看不太懂,主要还是靠猜。
OK,在Xcode左边的功能栏上,你会看见main.m的文件,这就是主函数了。单击main.m你就会看见如下代码。
@autoreleasepool 这个就是前文提到的,传说中的自动释放池了!这个代码当你创建好工程之后就已经帮你写好了,那么如何编译运行呢?
有没有看到那个播放键? 什么? 看不到? 那就先请你check一下你正在使用的编译器叫什么名字,有可能是你安装错了。。。
如果你清楚明白的看到了这个黑色的播放键,那么我就明确的说,这就是传说中的编译运行按钮~快捷键是(command+R)如果你的代码没有错误的话,那么将会有十分神奇的事情发生。神奇的事情发生了,在编译器的下方(左面的图框是调试框,右边的图框是编译框),你会看到编译结果。
到这里,基本的ObJC的概述和Xcode的简单使用方法就已经结束。