我正在使用Instruments检查我的IOS应用程序的内存使用情况,并发现CFString不断被分配和增长。在我的代码中创建NSString对象时,我使用了StringWithFormat方法,而不是像[[NSString alloc] init]这样的方法。我该如何停止这种情况?以下是Instrument输出的屏幕截图。
请告诉我问题是否缺少必要的信息。
请告诉我问题是否缺少必要的信息。
如果您使用方便构造函数创建大量临时对象,那么使用自定义自动释放池块是一个好的实践。
由于使用方便构造函数创建的对象是自动释放的,它们可能不会立即释放。这就是内存使用量激增的原因。
来自Apple:
许多程序创建临时对象并进行自动释放。这些对象会增加程序的内存占用直到该块结束。在许多情况下,允许临时对象累积直到当前事件循环迭代结束不会导致过度开销;但在某些情况下,您可能会创建大量临时对象,这些对象会显著增加内存占用,并且您希望更快地处理它们。在这些后一种情况下,您可以创建自己的自动释放池块。在块的结尾处,临时对象将被释放,这通常会导致它们被释放,从而减少程序的内存占用。
http://www.cocoanetics.com/2009/08/understanding-autoreleasing/