Possible Duplicate:
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]?我认为一定有一些不同.

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

推荐答案

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

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

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

Release:NSObject委托的实例方法.递减接收器的参考计数.

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

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

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

所以最后我们可以说

alloc goes with init

new = alloc + init

Ios相关问答推荐

带有动画层的UIView表示不会在工作表中设置动画

SwiftUI@Observable不跟踪父类属性中的更改以更新视图

无法在所有窗口上方显示图像

我应该使用哪个UIButton发送事件在SWIFT上刷卡?

如何在Android或iPhone上的原生react 中处理其他应用程序通知?

为什么EKEventStore().questFullAccessToEvents()可以与模拟器一起使用,而不能与真实设备一起使用?

如何防止UITest套件与Fastlane一起执行?

如何在 Swift 中存储具有关联值的协议?

RFID scanner 的蓝牙服务 UUID?

SwiftUI 选项卡式视图防止滑动到下一个选项卡

UIViewRepresentable - MKMapView 没有得到更新

如何根据设备时间设置 Flutter 应用时间线?

通过MatchedGeometryEffect向上滑动视图

本月使用 iOS 的天数?

如何在 SwiftUI 中检测 TextField 的实时变化?

从 NSData 或 UIImage 中查找图像类型

以编程方式 Select UITextField 中的所有文本

命令 /Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 失败,退出代码为 1

Select 器touchesBegan:withEvent:的覆盖方法具有不兼容的类型(NSSet,UIEvent)->()

用 NavigationViewController 快速呈现 ViewController