繁体   English   中英

iPhone memory 管理

[英]iPhone memory management

我不完全明白这一点。

如果我写:

NSNumber *number = [NSNumber initWithInteger: 5];

我必须释放它吗?

这是否与: NSNumber *number= [NSNumber alloc]; 相同

?

你不会调用NSNumber *number = [NSNumber initWithInteger: 5]; 因为NSNumber不响应+ initWithInteger: 您实际上需要同时调用+alloc-initWithInteger: ,如下所示:

NSNumber *number = [[NSNumber alloc] initWithInteger:5];

然后您将不得不稍后发布它; 对于您进行的每个 alloc 调用,您还应该调用 release。


或者,您可以使用以下 class 方法获取自动发布的NSNumber

NSNumber *number = [NSNumber numberWithInteger:5];

像这样的方法返回一个自动释放的 object,这意味着您以后不需要自己释放它。

“一般的经验法则是:如果您分配、复制或新建,memory 管理由您负责。”

我也会为此添加保留。

首先, NSNumber class 中没有名为“ +(id)initWithInteger: ”的 class 方法。 那应该是“ +(id)numberWithInteger:

你不应该释放它。 像“ [NSNumber numberWith... ”这样的构造函数被称为便捷构造函数 它们返回自动释放的对象 因此,您不必担心释放它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM