3

当我分析我的 iOS 应用程序时,我发现内存泄漏太多: 在此处输入图像描述

有我的 NSDateFormatter 代码,代码在一个循环中:

 for (NSDictionary * dataDict in deserializedData) {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone localTimeZone];
    [dateFormatter setTimeZone:timeZone];
    [dateFormatter setDateFormat : @"yyyy-MM-dd HH:mm:ss"];
    NSString *currentDateString = [dateFormatter stringFromDate:[NSDate date]];
    [dateFormatter release];
}

谁能告诉我我的代码有什么问题。

4

2 回答 2

2

试试这样的自动释放,

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat : @"yyyy-MM-dd HH:mm:ss"];

for (NSDictionary * dataDict in deserializedData) {
    NSString *currentDateString = [dateFormatter stringFromDate:[NSDate date]];
}
于 2013-03-04T06:13:48.140 回答
1

这段代码没有错。但我认为它不是在主线程上调用的。

只需在您编写此代码的函数的开头创建一个自动释放池。在函数结束时释放池。

-(void) yourFun
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    //other stuff...

    for (NSDictionary * dataDict in deserializedData) {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        NSTimeZone *timeZone = [NSTimeZone localTimeZone];
        [dateFormatter setTimeZone:timeZone];
        [dateFormatter setDateFormat : @"yyyy-MM-dd HH:mm:ss"];
        NSString *currentDateString = [dateFormatter stringFromDate:[NSDate date]];
        [dateFormatter release];
    }

    [pool release];
}
于 2013-03-04T06:24:54.187 回答