iOS开发之oc(八)--小知识补充 init方法补充
小知识补充
一、 id
1. 简介
万能指针,能指向任何OC对象,相当于NSObject *
id类型的定义
typedef struct objc_object { Class isa; } *id;
2. 使用
// 注意:id后面不要加上*
id p = [Person new];
3. 局限性
调用一个不存在的方法,编译器会马上报错
二、 .h和.m文件的抽取
1)每个类分布在不同文件中
2)类的声明放在.h文件,类的实现放在.m文件
3)若想使用某个类,就包含某个类的.h声明文件
三、 init方法补充(重点)
1. 对象创建原理
new的拆分两部曲
u 分配内存(+alloc)
u 初始化(-init)
Person *p1 = [Person alloc]; Person *p1 = [p1 init]; 合成一句后: Person *p = [[Person alloc] init];
2. init方法的重写
l 想在对象创建完毕后,成员变量马上就有一些默认的值
l init方法的重写过程
- (id)init {
// 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性
// self = [super init]; // 当前对象 self
// 2.如果初始化成功,才有必要进行接下来的初始化 if (self = [super init]) { // 初始化成功 _age = 10; } return self; // 3.返回一个已经初始化完毕的值 }
3.自定义构造方法
l 构造方法的一些规范
-
- (id)initWithAge:(int)age { if (self = [super init]) { _age = age; } return self; }
传递多个参数进行初始化
- (id) initWithAge:(int)age andNo:(int)no;
返回值是id类型
-
方法名都以init开头
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。