【发布时间】:2014-01-31 08:42:38
【问题描述】:
-(void)showLog
{
NSMutableString* msgStr = nil;
msgStr = [NSMutableString stringWithFormat:@"%s","Log :"];
//show Log
[msgStr release];
}
这是我的代码。我经常从一个线程调用这个函数。我已经禁用了 ARC,并且我正在使用 xcode 5 的 iOS 7 在 iPad Mini 上进行测试。在 XCode 5 中,它显示了连续的内存分配。即使我发布了这个msgStr,为什么它会显示内存分配增加?
任何帮助或建议都会很棒。
【问题讨论】:
-
请解释一下“显示连续内存分配”是什么意思。
-
您过度释放了字符串。我认为您没有正确理解内存情况。
-
我的线程中有一个 while 循环。在每次迭代中,我都会调用此方法。并且每次它显示我的应用程序分配的内存计数更高。
-
@Chuck,我也测试过没有
[msgStr release]。这是我的旧实现。没有释放它显示相同的行为 -
您应该阅读 Apple 的内存指南。你不释放你不拥有的对象。在您的情况下,您不拥有该对象。一般来说,大部分时间你并不拥有这些字符串。
标签: objective-c memory-management nsmutablestring