首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS中的[类新建]和[[类分配]初始化]有什么区别?

iOS中的[类新建]和[[类分配]初始化]有什么区别?
EN

Stack Overflow用户
提问于 2012-06-29 12:53:01
回答 3查看 34.6K关注 0票数 71

可能重复:

alloc, init, and new in Objective-C

我对[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]?我认为肯定有一些不同之处。

请解释一下两者的区别、优缺点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-29 13:03:35

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

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

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

Release:NSObject委托的实例方法。递减接收器的引用计数。

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

Retain: NSObject委托的实例方法。递增接收器的引用计数。

Copy: NSObject委托的实例方法。返回一个新的实例,它是接收器的副本。

所以最后我们可以说

alloc与初始化一起使用

new =分配+初始化

票数 134
EN

Stack Overflow用户

发布于 2012-06-29 13:03:17

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

票数 29
EN

Stack Overflow用户

发布于 2012-06-29 13:01:13

这里:alloc, init, and new in Objective-C

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11256228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档