Objective-c总结

来源:互联网 发布:ubuntu zip压缩 编辑:程序博客网 时间:2024/05/16 14:38


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,指针之间的赋值不会导致对象内容拷贝的发生。

原创粉丝点击