14

在OC中init开头的方法, 我们称之为构造方法

构造方法的用途: 用于初始化一个对象, 让某个对象一创建出来就拥有某些属性和值

1.必须先初始化父类, 再初始化子类

2.必须判断父类是否初始化成功, 只有父类初始化成功才能继续初始化子类

3.返回当前对象的地址 

4.如果init方法的返回值是instancetype, 那么将返回值赋值给一个其它的对象会报一个警告

5.如果是在以前, init的返回值是id, 那么将init返回的对象地址赋值给其它对象是不会报错的

6.instancetype == id == 万能指针 == 指向一个对象

7. id在编译的时候不能判断对象的真实类型

8. instancetype在编译的时候可以判断对象的真实类型

9. id和instancetype除了一个在编译时不知道真实类型, 一个在编译时知道真实类型以外, 还有一个区别

10. id可以用来定义变量, 可以作为返回值, 可以作为形参

11. instancetype只能用于作为返回值

12. 注意: 以后但凡自定义构造方法, 返回值尽量使用instancetype, 不要使用id

自定义构造方法:

其实就是自定义一个init方法

1.一定是对象方法

2.一定返回id/instancetype

3.方法名称一定以init开头

- (instancetype)init

if (self = [super init]) { // 初始化子类

_age = 6;

return self;

}

@end


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容