0

わかりました...こんにちは皆さん、私はこれを解決できませんでした。コード内に大量のリークがあり、その理由がわかりません。

最初に知っておくべきことは、このコードはバックグラウンドで実行されているため、自動解放プールを作成することです。正直なところ、MBprogressHUD が役に立ちます。

コードは機能しますが、Instruments によると、diccionario の作成 (alloc/init)、temporal 配列の作成、temporalMutable 配列の作成などでリークがあるとのことです。alloc/autorelease を実行するほとんどすべてのコードでリークが発生します。

何か案は?

// Some more code at the beginning

NSMutableDictionary *diccionario=[[NSMutableDictionary alloc] init];    

for (Horas *hora in [dia oraciones]) {

    if ([diccionario objectForKey:[hora Tipo]]==nil)
    {
        NSArray *temporal=[NSArray arrayWithObjects:[hora Hora],[hora Texto], nil];
        NSMutableArray *temporalMutable=[NSMutableArray arrayWithObjects:temporal, nil];
        [diccionario setObject:temporalMutable forKey:[hora Tipo]];

    }
    else
    {           
        NSMutableArray *nuevo=[diccionario objectForKey:[hora Tipo]];
        NSArray *temporal=[NSArray arrayWithObjects:[hora Hora],[hora Texto], nil];
        [nuevo addObject:temporal];
        [diccionario setObject:nuevo
                        forKey:[hora Tipo]];
    }

}

MyClass *resultado=[[[MyClass alloc] initSinDescarga:fecha tituloDia:[dia titulo] celebracionDia:[dia celebracion] oracionesDia:diccionario] autorelease];
[diccionario release];
return resultado;

}

4

1 に答える 1

0

わかりました 見ようとしてくれた皆さん、ありがとうございました。

問題は、私がインスタンス変数を解放していなかったことです.Instrumentsは、メモリが割り当てられている場所ではなく、メモリが割り当てられている場所でリークを指摘しています...だから...私は混乱しました。

再度、感謝します

于 2011-04-24T12:32:39.747 に答える