【问题标题】:Initializing objects [duplicate]初始化对象[重复]
【发布时间】:2012-01-17 06:01:54
【问题描述】:

可能重复:
Diference between [NSMutableArray array] vs [[NSMutableArray alloc] init]

使用Objective-C/Cocoa,有什么区别:

NSMutableData *myData = [NSMutableData data];
NSMutableString *myString = [NSMutableString string];

NSMutableData *myData = [[NSMutableData alloc] init];
NSMutableString *myString = [[NSMutableString alloc] init];

据我所知,它们似乎具有相同的最终结果?

【问题讨论】:

  • 查看 Cocoa 核心能力指南中的 "Object Creation"
  • 看@苹果内存指南-重要阅读。 alloc、copy、mutableCopy 表示你拥有它,你需要释放它。其他任何东西(按照惯例)都会调用自动释放,并将在下一个周期释放......
  • 如果你需要保留在你获得的功能范围之外自动释放的东西,那么你应该保留它,然后再释放。

标签: objective-c ios cocoa-touch cocoa


【解决方案1】:

[NSMutableData data] 被称为助手,查看这篇文章,Helper functions in Cocoa

Helper 通常会为你处理内存管理,也可以用于返回单例。

[[NSMutableData] alloc] init],你负责内存管理。

虽然如果您使用 ARC,您不必释放对象,但它会为您完成。

【讨论】:

  • 您链接到的帖子与此无关。这些方法是“便利构造函数”。
猜你喜欢
  • 2015-12-03
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 2021-08-25
  • 2023-03-17
  • 2018-09-19
  • 2013-06-27
  • 2020-10-13
相关资源
最近更新 更多