一些有关OC基础知识的笔记

1.OC是使用后缀为m的源代码文件,同时它也支持C、C++的源文件。

2.OC中使用“#import”导入头文件,也可以使用“#iclude”,但#import的功能类似“#ifndef……#define……#endif”,避免了多次导入同一个文件。

3.@interface于@implementation    

 @interface指令负责传递给编译器定义的新类的父类是谁,新类中的各个成员变量类型,定义的对象方法等信息。程序开通的@符号的作用是与编译器通信,@interface用于告知编译器接下去这段程序为定义类的接口,直到@end结束。

@implementatiion用于定义接口中生命的方法的具体实现。需要主意的是,类名必须和接口中的类名完全一致,方法定义中包含了接口中的各个方法的具体实现,同时每个方法定义的必须和接口中的方法声明的名称,参数,返回值均一致,但其方法定义的顺序不需要与接口中声明的顺序相同。

4.OC中,方法有两种:类方法和实例方法。类方法是在类范围内使用的方法,它以“+”号开始。相应的实例方法以“-”号开始。使用类方法时可以调用其他类方法,但由于类方法是和对象脱离的,所以用户不能调用实例方法,也不能使用实例变量,但可以通过类或对象调用方法。一般类方法多用于对象创建和对象的操作上。

和其他语言不通过,OC使用消息来调用方法。消息的格式:返回值 = [接受的对象或类名  方法名:参数];

5.对象的实例化过程中,new相当于alloc与init的组合。

6.有关继承:OC中只支持单一继承,不同于C++语言支持多继承。当程序中发送消息调用父类中的方法时,OC的调度程序会从当前类开始,依次向上寻找该方法,直到找到,或者没找到,报错。

7.@class

当在一个类中要使用另一个已经定义好的类时,可以使用@class指令。通过@class XXX;让编译器知道了XXX这个类,但若用户除了使用XXX类名之外还要用到XXX类中的方法,则需要使用import指令来导入XXX类,因为使用@class指令不需要编译器去处理整个XXX类,更能高效的使用XXX类。

8.方法的覆盖。子类可以用方法新的实现来替换父类的同名方法,称为覆盖所继承的方法,覆盖只需要在子类中重新定义该方法。覆盖只会影响方法的实现,但是不会改变对象接收到的消息。

9.self是一个指向类本身的指针,类似于C++中的this指针。当在子类中覆盖了父类的方法或变量后又想调用父类的该方法时,可以使用super这个特殊变量。super 指向父类。

10.内存管理。alloc方法用于创建对象时为其分配内存,引用计数设为1,并返回该对象。copy方法复制一个对象,此对象计数位1,返回此对象,同时用户将成为此克隆对象的拥有者。retain方法用于保留一个对象,该对象的计数加1,同时,用户成为此对象的拥有者。release方法用于释放一个对象,同时该对象的计数减1.autorelease方法用于在将来某个时候释放一个对象,同时该对象的引用计数减1,使用该方法时,对象会被自动添加到自动释放池,当自动释放池被释放时才释放该对象。

11.Foundation框架。Foundation框架作为Cocoa的一部分,它定义了一组用于OC语言的底层函数,是进行软件开发时经常要用到的组件。所谓框架就是一组类、方法、函数和帮助文档的集合体,它用来帮助用户进行程序开发。Foundation框架提供了用于程序开发的基础函数,包括用于开发的基础对象整型、字符串以及数组、字典、集合等,同时该框架提供了包括时间类、内存管理机制等。

posted on 2012-07-26 21:33  暹暹  阅读(348)  评论(0)    收藏  举报

导航