- id
- 简介
- 万能指针,能指向任何OC对象,相当于NSObject *
- id类型的定义
typedef struct objc_object {
Class isa;
} *id;
- 使用
// 注意:id后面不要加上*
id p = [Person new];
- 局限性
调用一个不存在的方法,编译器会马上报错
- 构造方法:---用来初始化对象的方法,是一个对象方法
- 对象创建原理
- new的拆分两部曲
- 分配内存(+alloc)
- 初始化(-init)
Person *p1 = [Person alloc];
Person *p1 = [p1 init];
合成一句后:
Person *p = [[Person alloc] init];
- init方法的重写
- 目的:为了让对象创建完毕后,成员变量马上就有一些默认的值
- init方法的重写过程
- 先初始化父类,后初始化子类
- 先调用父类的构造方法([super init])
-
- (id)init { if (self = [super init]) { _age = 10; } return self; }
自定义构造方法
- 构造方法的一些规范
- 返回值是id类型
- 方法名都以init开头
-
- (id)initWithAge:(int)age { if (self = [super init]) { _age = age; } return self; }
传递多个参数进行初始化
- (id) initWithAge:(int)age andNo:(int)no;
.h和.m文件的抽取
- 每个类分布在不同文件中
- 类的声明放在.h文件,类的实现放在.m文件
- 若想使用某个类,就包含某个类的.h声明文件