Objective C2.0学习(十四 变量和数据类型)

来源:互联网 发布:商品套餐 数据库设计 编辑:程序博客网 时间:2024/06/05 00:33
本章讨论的变量的作用域,对象的初始化方法以及数据类型的内容:
类的初始化
Fraction *myFraction = [[Fraction alloc] init];
此处初始化了Fraction类
[myFraction setTo: 1 over: 3];

初始化对象之后为其设置初值的过程通常可合并到一个方法中。
例如,你可以定义一个initWidth::方法,它初始化一个分数,并将其分子和分母设置为两个给定的参数
例如,Foundation框架中的NSArray类包含了以下6个初始化方法:
initWithArra:
initWithArray:copyItems:
initWithContentsOfFile:
...
很可能会用下面语句序列完成数组的空间分配和初始化空间:
myArray = [[NSArray alloc] initWithArray: myOtherArray];
常见的初始化方法都以init开头,可以看到,NSArray的初始化方法遵循了这个管理。

如果类包含了多个初始化方法,其中一个就应该是制定的(designated)初始化方法,并且其他所有初始化方法都应该使用这个方法。

大多数情况下。。init方法,只能初始化自己的实例变量。
基于这个讨论,Fraction类的初始化方法initWith::可能如下

Fraction.h:
-(Fraction *) initWith: (int) n: (int) d
{
self = [super init];
if(self)
{
[self setTo: n over: d];
}
return self;
}
该方法首先调用了父类的初始化方法,也就是NSObject的init方法。初始化的结果需要指派回self。
完成了Super的初始化(返回的非零值表示初始化成功)后,使用setTo:over:方法设置Fraction的分子和分母。

Fraction.m:
...
Fraction *a, *b;
a = [[Fraction alloc] initWith:1:3];
a = [[Fraction alloc] initWith:3:7];
...
原创粉丝点击