iOS之初始化对象

更新记录

时间 | 更新记录 |
---|---|---
2020年4月6日| 初稿 |

初始化对象

  • 一般使用alloc分配内存,Objective-C中的alloc方法将这片内存全部初始化为0
  • OC中的对象必须先初始化才能使用(调用OC中的init或者initwithxxx函数)
  • 一般的对象需要分配内存和初始化后才能使用,C++和Java中都是在构造函数的一次操作中便完成上述操作。而OBjective-C中是分开两个操作
  • Objective-C中最好使用嵌套方式初始化对象,如Car *car = [[Car alloc] init];
    • 初始化方法返回的对象可能与分配的对象不同
    • 像NSString或者NSArray这样类,可能内部是类簇的实现。在调用带参数的init函数时,内部可能会返回另外一个类的对象,导致init返回的对象和alloc返回的对象是不同的。

编写初始化方法

  • 常见如下代码:
(id) init {
    if (self = [super init]) {
        //do something to init
    }
    return self;
}
  • 调用基类的init代码,可以让基类完成自身的初始化工作
  • 如上所述,init方法返回的对象可能和alloc方法返回的不同。因此这里要更新self的值
  • 查找实例变量时,是通过self及固定的偏移距离来寻找内存位置的。因此self的值非常重要,不能出错。

参考资料

  • 《Objective-C基础教程》第2版 10.1 对象初始化
posted @ 2020-04-06 21:53  HelloWooo  阅读(263)  评论(0编辑  收藏  举报