Objective-C的语言特性是:
1,Objective-C在最初的版本不支持垃圾回收的,但是后来添加了这个机制。
2,OBjC不支持命名空间机制,取而代之的是设计师必须在某类别名称前加上前缀。
3,OBjC不支持运算符重载,只支持单重继承,不允许多重继承。
4,OBjC面向对象最大的特色是消息传递模型,在OBjC里,对象不调用方法,二十互相传递消息。
5,OBjC不支持函数内联。
语法要点
1,严格区分大小写。
2,支持两种风格的注释。
3,语句以分号结束。
4,用#import代替#include。
5,创建和释放内存池。
有一点需要注意,就是Objective-C对Bool的定义,这是和C语言有很大的不同的,在c语言中,true是一切非零值,而false为零值,但是在Objective-C中的定义如下:
typedef char BOOL;
#define YES 1
#define NO 0
ID类型不是OBjC的内置类型,而是用户自定义类型。
ID类型是一种通用的指针类型。(它定义的数据都是指针)
对返回值和函数参数来说,ID是默认类型。
id obj = [someclass init]; 正确,obj是指针,因为id是指针类型
id *obj = [someclass init];错误
nil只能被应用在id类型的地方,就是java 与C++中指向对象的指针。而NULL用于非对象指针。(为了防止访问过界,防止过多的判断,提高程序的稳健性)
nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个值。而且我们对于nil调用方法,不会产生crash或者抛出异常。
对象并不都是物理实体,还有可能是逻辑实体,比如说是时间。
类是对象的蓝图和工厂。(在OBjC里,∏可以通过类创建属于类的对象,在OBjC里,对象是对象,类也是对象)
对象是类的实例。
注意:在OBjC里,几乎所有的对象都是在堆区实例化的。所以不可以通过等号来简单赋值对象,如果用等号的话也只是简单的指针赋值,使之指向同一地址。
消息传递的格式:[ClassOrInstance method];
用冒号(:)传递参数。
总结:
1,OBjC中所有的对象都在堆区分配内存,不存在在栈区实例化的对象。
2,OBjC中用指针来标识实例。
3,指针之间的赋值不会导致对象内容拷贝的发生。