[英]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.