Objective-C 中对象的初始化是通过调用对象的 init 方法来完成的,init 方法是 NSObject 类中定义的一个实例方法。在子类中,也可以重写该方法以实现特定的初始化逻辑。
通常情况下,我们会通过 alloc 方法创建一个对象,并在其后紧接着调用 init 方法进行初始化。
使用 alloc 方法创建对象时,会先为对象分配一块内存空间,然后将该内存空间初始化为一个有效的对象,并返回指向该对象的指针。但是,在这种情况下,尚未对对象进行任何初始化或赋值操作,因此需要调用相应的初始化实例方法来完成对象的初始化。
例如,下面的代码演示了如何使用 alloc 方法创建一个 NSString 对象:
NSString *str = [[NSString alloc] init];
需要注意的是,在某些情况下,可能会使用其他的初始化方法来完成对象的初始化。比如,如果我们要从一个已有的对象中复制出一个新的对象,可以使用 copy 方法:
MyObject *newObj = [oldObj copy];
此时,系统会自动调用 MyObject 类中定义的 copyWithZone: 方法来完成新对象的初始化。
另外,在 Objective-C 中还有一种便捷的初始化方式,即使用工厂方法来创建对象。例如:
NSDate *date = [NSDate date];
上述代码中,使用的就是 NSDate 类中定义的一个工厂方法,它会返回一个当前日期和时间的 NSDate 对象。

Objective-C中,对象初始化主要通过alloc和init方法,先分配内存再调用init进行初始化。子类可重写init方法以定制初始化逻辑。除了init,还有copy方法用于复制对象,以及工厂方法如NSDate的+date,用于便捷创建对象。
726

被折叠的 条评论
为什么被折叠?



