大家好我读了许多使用ARC的内存释放示例, 他们说如果你把指针设置为nill ARC会为你解除分配, 一些教程也很好地解释了这个问题,但在我的程序中 仍然没有工作......
测试由以下几行组成:
while(1)
{
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Sydney"]];
NSString *tmp =[formatter stringFromDate:now];
lol = [tmp copy];
tmp = nil;
now = nil;
formatter = nil;
lol = nil;
}
它的内存大小仍在增长...... 帮助我......也许是为了做这件事我必须关掉ARC ......
答案 0 :(得分:3)
目前还不清楚你要对该代码做什么,但如果你将所有内容都包含在这样的@autorelease块中,它会对你有所帮助:
@autorelease {
NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Sydney"]];
NSString *tmp =[formatter stringFromDate:now];
lol = [tmp copy];
tmp = nil;
now = nil;
formatter = nil;
lol = nil;
}
答案 1 :(得分:2)
arc可以自动释放数据,所以在紧密的循环中(你说你在使用的时候),runloop没有前进,自动释放池没有耗尽。
在你的循环中放置一个显式的@autoreleasepool