4.复合与源文件组织

来源:互联网 发布:圆融网络佛学院 编辑:程序博客网 时间:2024/04/30 14:38

一、复合

1.自定义NSLog()

   记住,NSLog( )可以使用%@格式说明符来输出对象。NSLog()处理%@说明符时,会询问参数列表中相应的对象以得到这个对象的描述。从技术上讲,也就是NSLog()给这个对象发送了description消息,然后对象的description方法生成一个NSString并将其返回。  

-(NSString *)description{

return (@"  内容 ");

}

2.使用new创建新对象时,系统其实在后台执行两个步骤:第一步,为对象分配内存,即对象获得一个用来存放实例变量的内存块;第二步,自动调用init方法,使该对象进入可用状态。

init方法:

 if(self = [super init])

为了让超类将所有需要的初始化工作一次性完成,需要调用[super init]。init方法返回的值(id类型数据,即泛型对象指针)就是被初始化的对象。

将[super init]返回的结果赋给self是Objective-c的惯例。这么做是为了防止超类在初始化过程中返回的对象与一开始创建的不一致。

3.存取方法

 3.1存取(accdssor)方法:是用来读取或改变某个对象属性的方法。为对象中的变量赋值的存取方法为setter方法。

   另一种存取方法就是getter方法,getter方法为代码提供了通过对象自身访问对象对象属性的方法。

  存取方法总是成对出现的,一个用来设置属性的值,另一个用来读取属性的值。

4.复合还是继承

   继承的类之间建立的关系为“is a”(是一个)。

   复合的类之间建立的关系为“has a”(有一个)。

   创建对象时,先花时间想清楚什么时候应该继承,什么时候应该复合。

二、源文件组织

注意:导入头文件有两种方法:使用引号或者尖括号。例如,#import<Cocoa/Cocoa.h>和#import"Tire.h".

带尖括号的语句用于导入系统文件,而带引号的语句则说明导入的是项目的本地文件。

  1. Objective-C引入了关键字@class来告诉编译器:“这是一个类,所以我只会通过指针来引用它”。

   说明:@class创建了一个前向引用。这是在告诉编译器:“相信我。以后你自然会知道这个类到底是什么,但是现在,你知道这些足矣!”

   如果有循环依赖关系,@class也很有用。即A类使用B类,B类已使用A类。如果试图通过#import语句让这两个类互相引用,那么就会出现编译错误。但如果在A.h文件中使用@class,在B.h中使用@classA,那么这两个类就可以互相引用了。


0 0