美文网首页
第五章 对象的初始化

第五章 对象的初始化

作者: 一个人的思考 | 来源:发表于2015-05-17 10:54 被阅读40次

    第五章 对象的初始化

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

    @interface Tire : NSObject { float pressure;

    float treadDepth; }

    • -  (id) initWithPressure:(float) pressure;

    • -  (id) initWithTreadDepth:(float) treadDepth;

    • -  (id) initWithPressure:(float) pressure treadDepth: (float) treadDepth;

    • -  (void) setPressure: (float) pressure;

    • -  (float) pressure;

    • -  (void) setTreadDepth:(float) treadDepth;

    • -  (float) treadDepth;

      @end // Tire

      //Tire.m 文件 #import "Tire.h"

      @implementation Tire

      - (id) init {

      if (self = [self initWithPressure:34 treadDepth: 20]) {

      }

    //指定的初始化函数

    }

    - {

    }

    -

    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、若初始化函数不止一个,则需要选定一个指定的初始化函数,被选定的方法应该调用超类的指定

    的初始化函数。

    相关文章

      网友评论

          本文标题:第五章 对象的初始化

          本文链接:https://www.haomeiwen.com/subject/ieokqttx.html