OC基础学习8:对象初始化
1 分配(allocation)对象
alloc
方法干的事件:
1 从操作系统获得一块内存。 2 指定为存储对象的实例变量的位置。 3 对内存初始化:
BOOL
类型被初始化为:NO
;int
类型被初始化为:0
;float
类型被初始化为:0.0
;所有指针被初始化为nil
。
-
初始化对象
init
方法Car *car = [[Car alloc] init];
-
初始化要做些什么
- CarParts程序中初始car对象是,init方法中创建engine对象和全部4个tire对象
- 懒性求值(lazy evaluation),只为engine对象和tire对象预留位置
2 便利初始化函数(convenience initializer)
以init开头的方法只是遵循命名约定的普通方法。 NSString类的初始化方法例子:
-
- (id) init;
1
NSString *emptyString = [[NSString alloc] init];
-
- (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
1
NSString *string = [[NSString alloc] initWithFormat:@"%d or %d", 1, 2];
-
- (nullable instancetype)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;
3 指定初始化函数(designated initializer)
- 类中的某个初始化方法被指派为指定初始化函数
- 该类的所有初始化方法都使用指定初始化函数执行初始化操作
- 子类使用期超类的指定初始化函数进行超类的初始化
- 通常,接受参数最多的初始化方法是最终的指定的初始化函数
文章作者 andyron
上次更新 2024-07-16
许可协议 原创文章,如需转载请注明文章作者和出处。谢谢!