可可“内存管理编程指南”的文件说:可可内存管理规则
如果使用名称以“黄金”或“新”或包含一个方法创建你需要一个对象的所有权“复制”(例如,alloc,newObject或mutableCopy),或者如果您发送一个保留消息。您有责任放弃使用发行版或自动发行版所拥有的对象的所有权。任何其他时间你收到一个对象,你不能释放它。
这是否也适用于[NSNumber numberWithFloat:]或[CAAnimation动画]等便利方法?我应该释放这些还是不?
谢谢!
可可“内存管理编程指南”的文件说:可可内存管理规则
如果使用名称以“黄金”或“新”或包含一个方法创建你需要一个对象的所有权“复制”(例如,alloc,newObject或mutableCopy),或者如果您发送一个保留消息。您有责任放弃使用发行版或自动发行版所拥有的对象的所有权。任何其他时间你收到一个对象,你不能释放它。
这是否也适用于[NSNumber numberWithFloat:]或[CAAnimation动画]等便利方法?我应该释放这些还是不?
谢谢!
这种说法仍然是便利的方法真实的,尤其是最后一句
您收到一个对象, 你不能释放它的任何其他时间。
这意味着你必须不释放这些对象,除非你事先明确向他们发送一个retain消息。
这些方法名称不以alloc
或new
开头,也不包含copy
,也不是retain
。所以,不,你不拥有这些方法返回的对象,所以你不应该释放它们。
这意味着他们是autoreleased,对不对?谢谢! – Kay 2010-07-06 13:49:23
@Kay:是的,当它们从便捷方法返回时,它们会自动释放。 – 2010-07-06 15:47:36
不,它意味着你没有它们的所有权,因此你不应该释放它们。他们的主人如何选择管理自己的记忆(保留+自动释放或不)是你的担忧。 – 2010-07-06 19:17:40