第五章 对象的初始化

2015-05-17  本文已影响40人  一个人的思考

第五章 对象的初始化

//********************************************************************************* //Tire.h 文件
#import <Cocoa/Cocoa.h>

@interface Tire : NSObject { float pressure;

float treadDepth; }

//指定的初始化函数

}

- {

}

-

return (self);

} - {

}

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

// init
(id) initWithPressure:(float) p

if (self = [self initWithPressure:p treadDepth: 20.0]) {

{
if (self = [super init]) {

}

- {

pressure = p;

treadDepth = td; }

return (self);
// initWithPressure:treadDepth:

(void) setPressure: (float) p pressure = 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 //*********************************************************************************

通常的写法:- (id)init {

if (self = [super ...

}

return (self) ; }

init]){

注:在自己的初始化方法中,需要调用自己的指定的初始化函数或者超类的指定的初始化函数。一定 要将超类的初始化函数的值赋给self 对象,并返回你自己的初始化方法的值。超类可能决定返回一个完全 不同的对象。

有些类包含多个以init 开头的方法:
例如 NSString 类中的一些初始化方法:
NSString *emptyString = [[NSString alloc] init] ; //返回一个空的字符串
NSString *string = [[NSString alloc] //返回一个字符串,其值为 25or624
NSString *string = [[NSString alloc] //使用指定路径上的文件中的内容初始化一个字符串

initWithFormat :@"%d or %d",25,624] ; initWithContentOfFile :@"/tmp/words.txt"] ;

初始化函数的规则:
1、若不需要为自己的类创建初始化函数方法,只需要alloc 方法将内存清 0 的默认行为,不需要担心

init 方法。 2、若构造一个初始化函数,则一定要在自己的初始化函数中调用超类的指定的初始化函数。 3、若初始化函数不止一个,则需要选定一个指定的初始化函数,被选定的方法应该调用超类的指定

的初始化函数。

上一篇下一篇

猜你喜欢

热点阅读