ARC内存版本不起作用

时间:2014-01-20 22:57:04

标签: ios objective-c memory automatic-ref-counting

大家好我读了许多使用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 ......

2 个答案:

答案 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