内存泄漏与NSDateFormatter

时间:2013-03-04 06:06:16

标签: ios objective-c

当我分析我的iOS应用程序时,我发现内存泄漏太多: enter image description here

我的代码有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];
}

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

2 个答案:

答案 0 :(得分: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]];
}

答案 1 :(得分: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];
}
相关问题