iPhone应用学习笔记中对象的初始化是本文要介绍的内容,主要是来学习一下对象初始化的内容,来看详细内容。为方便学习,附有代码!
1、关于 self = [super init]
最先运行的代码是[super init],其作用是使超类完成它们自己的初始化工作。从根类NSObject继承的类调用超类的初始化方法,可以使NSObject执行所需的任何操作,以便对象能够响应消息并处理保留计数器。而从其他类继承的类调用超类的初始化方法,可以使子类有机会实现自己全新的初始化。
实例变量所在的内存位置到隐藏的self参数之间的距离是固定的,如果从init方法返回一个新对象,而需要更新self,以便其后的任何实例变量的引用可以呗映射到正确的内存位置,这也是我们需要使用self = [super init]这种形式进行赋值的原因。
这个赋值操作值影响给init方法中self的值,而不影响该方法范围以外的任何内容。
2、有关便利初始化函数
许多类包含便利初始化函数,他们用来完成某些额外工作的初始化方法。
NSString类:
- -(id) init;
以上方法初始化一个新的空字符串,对于不可变的NSString类来说,这个方法没有多大用处。但是,你可以分配和初始化一个新的NSMutableString类的对象并开始向该对象中保存字符,你可以使用下面这样使用此对象:
- NSString *emptyString = [[NSString alloc] init];
上面的代码返回一个空字符串
当然,你也可以接受格式化的字符串并输出格式化的结果一样。
- string = [[NSString alloc] initWithFormat:@"%d or %d", 25, 624];
上面的代码返回一个字符串,其值为“25 or 624”;
更强大的是,你可以打开指定路径上的文本文件,读取文件内容太,并使用文件内容初始化一个字符串。
- string = [[NSString alloc] initWithContentsOfFile: @"words.txt"];
创建NSMutableArray数组,有一个很简便的方法replaceObjectAtIndex:withObject,该方法最适合用来实现setTire:atIndex.
要使用replaceObjectAtIndex:withObject:方法,在指定的索引位置必须存在一个能够被替代的对象。
新的NSMutableArray数组不包含任何内容,因此需要使用一些对象作为占位符,NSNull类的对象非常适合完成此项工作,因此,我们在数组中添加4个NSNull对象
附上Tire.m的代码:
- #import "Tire.h"
- @implementation Tire
- - (id) init
- {
- if (self = [self initWithPressure: 34
- treadDepth: 20]) {
- }
- return (self);
- } // init
- - (id) initWithPressure: (float) p
- {
- if (self = [self initWithPressure: p
- treadDepth: 20.0]) {
- }
- return (self);
- } // initWithPressure
- - (id) initWithTreadDepth: (float) td
- {
- if (self = [self initWithPressure: 34.0
- treadDepth: td]) {
- }
- return (self);
- } // initWithTreadDepth
- - (id) initWithPressure: (float) p
- treadDepth: (float) td
- {
- if (self = [super init]) {
- ppressure = p;
- treadDepth = td;
- }
- return (self);
- } // initWithPressure:treadDepth:
- - (void) setPressure: (float) p
- {
- ppressure = p;
- } // setPressure
- - (float) pressure
- {
- return (pressure);
- } // pressure
- - (void) setTreadDepth: (float) td
- {
- treadDepth = td;
- } // setTreadDepth
- - (float) treadDepth
- {
- return (treadDepth);
- } // treadDepth
- - (NSString *) description
- {
- NSString *desc;
- desc = [NSString stringWithFormat:
- @"Tire: Pressure: %.1f TreadDepth: %.1f",
- pressure, treadDepth];
- return (desc);
- } // description
- @end // Tire
小结:iPhone应用学习笔记之对象初始化的内容介绍完了,希望本文对你有所帮助!