3

iOSアプリケーションのプロファイルを作成すると、メモリリークが多すぎることがわかりました。 ここに画像の説明を入力してください

NSDateFormatterを使用したコードがあり、コードは1つのループにあります。

 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 に答える