Pra*_*d G 68 allocation objective-c init new-operator ios
我有点困惑[Class new]和 [[Class alloc] init].我content用[Class new]和 定义了一个对象[[Class alloc] init].
(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
我的问题是关于之间的差异[Class new]和[[Class alloc] init].对我来说,(1)和(2)是相似的.如果(1)和(2)相似,那么为什么我们[[Class alloc] init]大部分时间都在使用[Class new]?我认为必须有一些区别.
请解释两者的差异,利弊?
Sha*_*anu 130
Alloc: NSObject的类方法.返回接收类的新实例.
Init:NSObject的实例方法.由子类实现,在分配了内存之后立即初始化新对象(接收器).
新:NSObject的类方法.分配接收类的新实例,向其发送init消息,并返回初始化对象.
发布:NSObject委托的实例方法.减少接收者的参考计数.
Autorelease:NSObject委托的实例方法.将接收器添加到当前自动释放池.
保留: NSObject委托的实例方法.增加接收器的引用计数.
复制: NSObject委托的实例方法.返回一个新实例,它是接收者的副本.
总而言之,我们可以这么说
alloc与init一起使用
new = alloc + init
dre*_*lax 29
该+new方法只是简写+alloc和-init.所有权语义是相同的.使用的唯一好处+new是它更简洁.如果需要为类的初始化程序提供参数,则必须使用+alloc和-initWith...方法.
| 归档时间: |
|
| 查看次数: |
32811 次 |
| 最近记录: |