A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 956251361 中级黑马   /  2016-1-1 10:11  /  605 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值.

#import "Person.h"

@implementation Person

//当子类把父类的init覆盖了,默认先执行子类的init
- (instancetype)init{

    //
    self = [super init];//先让父类把父类原来做的事情做完

    //判断父类是否初始化成功
    if (self) {
        //此处写子类初始化的内容
        _age = 10;//给_age设置默认值10
    }
    return self;//self指代的是方法的调用者

}

@end

这里设计的几个问题:
1:[super init]的作用
面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化
2:self为什么要赋值为[super init]
简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc了一块空间.这时[super init]可能alloc失败,这时就不再执行if中的语句.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马