Cocoa内存管理规则

Cocoa内存管理规则,cocoa,cocoa-touch,memory-management,Cocoa,Cocoa Touch,Memory Management,Cocoa“内存管理编程指南”文档中说: 如果您使用名称以“alloc”或“new”开头或包含“copy”的方法(例如,alloc、newObject或mutableCopy)创建对象,或者向其发送retain消息,则您将获得对象的所有权。您负责放弃使用“释放”或“自动释放”拥有的对象的所有权。在任何其他时间收到对象时,都不能释放它 这是否也适用于方便的方法,如[NSNumber numberWithFloat:]或[CAAnimation animation]?我是否应该释放这些? 谢谢 为了

Cocoa“内存管理编程指南”文档中说:

如果您使用名称以“alloc”或“new”开头或包含“copy”的方法(例如,alloc、newObject或mutableCopy)创建对象,或者向其发送retain消息,则您将获得对象的所有权。您负责放弃使用“释放”或“自动释放”拥有的对象的所有权。在任何其他时间收到对象时,都不能释放它

这是否也适用于方便的方法,如[NSNumber numberWithFloat:]或[CAAnimation animation]?我是否应该释放这些?


谢谢

为了方便起见,这句话仍然正确,特别是最后一句话

任何时候你收到一个物体, 你不能释放它


这意味着您必须不要释放这些对象,除非您事先明确向它们发送retain消息。

为了方便起见,该语句仍然是正确的,尤其是最后一句话

任何时候你收到一个物体, 你不能释放它


这意味着您必须不释放这些对象,除非事先明确向它们发送retain消息。

这些方法名称不以
alloc
new
开头,也不包含
copy
,也不包含
retain
。因此,不,您不拥有这些方法返回的对象,因此您不应该释放它们。

这些方法名称不以
alloc
new
开头,也不包含
copy
,也不包含
retain
。因此,不,你不拥有这些方法返回的对象,所以你不应该释放它们。

@Kay:是的,当它们从便利方法返回时,它们会自动释放。不,这意味着你没有它们的所有权,因此你不应该释放它们。它们的所有者如何选择管理它们的内存(保留+自动释放或不保留)与您无关。@Kay:是的,当它们从便利方法返回时,它们会自动释放。不,这意味着您没有它们的所有权,因此您不应该释放它们。它们的所有者如何选择管理它们的内存(保留+自动释放或不保留)与您无关。