关于[NSString stringWithFormat:@“”]我有一个奇怪的问题;
这是我的代码:
NSString *log;
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(someFunction) userInfo:nil repeats:YES];
- (void) someFunction
{
log = [NSString stringWithFormat:@"a very big string here....."];
}
这一行“log = [NSString stringWithFormat];”非常快速地增加记忆
我找不到任何理由:(
顺便说一句,我使用ARC。
答案 0 :(得分:2)
我不担心你的记忆没有被释放,因为正如你在这里看到的那样,我们非常同意你做的是正确的。
我担心的是为什么会像这样报告内存。我以为内存监视器可能正在报告分配(甚至会释放累积)。
我在这台机器上的XCode版本较低,没有内存显示器,所以我不能在这里查看。但我发现this link ...也许你可以查看他们对 Zombies 选项的看法。
此外,您可以使用乐器作为第二个工具来查看正在发生的事情。
答案 1 :(得分:0)
它增加了内存,因为stringWithFormat:方法生成了格式字符串的副本。由于日志变量似乎是一个实例变量,因此在释放包含类或类将日志设置为nil之前,ARC不会在日志上执行发布。
如果要快速释放分配给'log'的内存,则设置log = nil;在退出someFunction之前。