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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是薛明星 中级黑马   /  2015-12-23 21:32  /  629 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法怎么写

2 个回复

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

#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中的语句.

1.自定义构造方法规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头

2.自定义构造方法的使用注意
(1)自己做自己的事情
(2)父类的方法交给父类的方法去处理,子类的方法处理子类自己的属性.
回复 使用道具 举报
需要掌握构造方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马