iOS中的和 init有什么区别?

可能重复:
在Objective-C中的alloc,init和new

我对[Class new][[Class alloc] init]有点困惑。 我已经使用[Class new][[Class alloc] init]定义了一个对象content

 (1). NSMutableArray *content = [NSMutableArray new]; (2). NSMutableArray *content = [[NSMutableArray alloc] init]; 

我的问题是关于[Class new][[Class alloc] init]之间的区别。 对我来说,(1)和(2)是相似的。 如果(1)和(2)是相似的,那么为什么我们大多数时候使用[[Class alloc] init] ,而[Class new]呢? 我认为一定有一些区别。

请解释两者的差异,优缺点?

Alloc: NSObject的类方法。 返回接收类的新实例。

Init :NSObject的实例方法。 由子类实现以便在分配内存后立即初始化一个新的对象(接收者)。

:NSObject的类方法。 分配接收类的新实例,发送一个init消息,并返回初始化的对象。

发布 :NSObject委托的实例方法。 减less接收机的参考计数。

Autorelease :NSObject委托的实例方法。 将接收器添加到当前的自动释放池。

保留: NSObject委托的实例方法。 增加接收器的引用计数。

复制: NSObject委托的实例方法。 返回接收者副本的新实例。

所以最后我们可以这样说

分配随着初始化

new = alloc + init

+new方法只是简单的+alloc-init 。 所有权语义是相同的。 使用+new的唯一好处是它更简洁。 如果您需要为类的初始化程序提供参数,则必须使用+alloc-initWith...方法。

这里: Objective-C中的alloc,init和new

基本上这是一个现代与传统的问题。 init比new更直接的优点是有许多自定义的init方法。