你去:
应用程序内存管理是在程序运行时分配内存,使用它并在完成后释放内存的过程.编写良好的程序使用尽可能少的内存.在Objective-C中,它还可以被看作是在许多数据和代码之间分配有限内存资源的所有权的一种方式.完成本指南后,您将掌握管理应用程序内存所需的知识,方法是明确管理对象的生命周期,并在不再需要时释放它们.
虽然内存管理通常被视为单个对象的级别,但您的目标实际上是管理对象图.你想确保你在内存中没有比实际需要更多的对象......
mmalc.. 13
重复内存管理的基本规则通常没有用,因为你几乎总是犯错误或者不完整地描述它们 - 就像'heckj'和'benzado'提供的答案一样......
Apple的内存管理规则文档中提供了内存管理的基本规则.
来自'www.stray-bits.com'的答案的恰当之处:声称从"非拥有"方法返回的对象是"自动释放的"也充其量是误导性的.您通常不应该考虑是否"自动释放"某些内容,而只是考虑内存管理规则并确定您是否通过这些约定拥有了返回的对象.如果你这样做,你需要放弃所有权......
一个反例(考虑自动释放的对象)就是当你考虑与方法相关的性能问题时stringWithFormat:
.由于您通常(1)无法直接控制这些对象的生命周期,因此它们可能会持续相对较长的时间并不必要地增加应用程序的内存占用量.虽然在桌面上这可能没什么影响,但在更受限制的平台上,这可能是一个重要问题.因此,在所有平台上使用alloc
/ init
模式被认为是最佳实践,并且在更受约束的平台上,在可能的情况下,强烈建议您不要使用任何会导致自动释放对象的方法.
(1)您可以使用自己的本地自动释放池来控制.有关详细信息,请参阅Apple的内存管理编程指南.
你去:
应用程序内存管理是在程序运行时分配内存,使用它并在完成后释放内存的过程.编写良好的程序使用尽可能少的内存.在Objective-C中,它还可以被看作是在许多数据和代码之间分配有限内存资源的所有权的一种方式.完成本指南后,您将掌握管理应用程序内存所需的知识,方法是明确管理对象的生命周期,并在不再需要时释放它们.
虽然内存管理通常被视为单个对象的级别,但您的目标实际上是管理对象图.你想确保你在内存中没有比实际需要更多的对象......
重复内存管理的基本规则通常没有用,因为你几乎总是犯错误或者不完整地描述它们 - 就像'heckj'和'benzado'提供的答案一样......
Apple的内存管理规则文档中提供了内存管理的基本规则.
来自'www.stray-bits.com'的答案的恰当之处:声称从"非拥有"方法返回的对象是"自动释放的"也充其量是误导性的.您通常不应该考虑是否"自动释放"某些内容,而只是考虑内存管理规则并确定您是否通过这些约定拥有了返回的对象.如果你这样做,你需要放弃所有权......
一个反例(考虑自动释放的对象)就是当你考虑与方法相关的性能问题时stringWithFormat:
.由于您通常(1)无法直接控制这些对象的生命周期,因此它们可能会持续相对较长的时间并不必要地增加应用程序的内存占用量.虽然在桌面上这可能没什么影响,但在更受限制的平台上,这可能是一个重要问题.因此,在所有平台上使用alloc
/ init
模式被认为是最佳实践,并且在更受约束的平台上,在可能的情况下,强烈建议您不要使用任何会导致自动释放对象的方法.
(1)您可以使用自己的本地自动释放池来控制.有关详细信息,请参阅Apple的内存管理编程指南.