alloc 与 init
大约 1 分钟
alloc 与 init
Objective-C 中,alloc 和 init 方法经常一起使用来创建对象
- alloc 方法会分配内存空间来存储对象,返回指向该内存空间的指针。这个空间中的值是未定义的,需要使用 init 方法来初始化对象的状态。
- init 方法则是用来初始化对象的状态。它会在对象的内存空间被分配之后立即被调用。通过设置实例变量的初始值、分配和设置默认的资源以及执行其他必要的初始化操作,它可以确保新对象的状态是一致的并且可用的。
需要注意的是,alloc 方法只是用来分配内存空间,它并不会初始化对象的状态,因此在使用 alloc 方法创建对象时,必须使用 init 方法来初始化该对象。
通常情况下会使用类工厂方法来同时调用 alloc 和 init 方法来创建对象,例如:
MyObject *object = [[MyObject alloc] init];
如果一个类没有提供 init 方法,则可以使用 alloc 方法来分配内存空间,但是必须在创建对象之后手动进行初始化。
MyObject *object = [[MyObject alloc] initMyObjectWithParam:param];
需要注意的是,在使用 init 方法时,必须保证对象已经被成功地分配了内存空间。否则在调用 init 方法时会出现内存错误。