0

アプリのすべてのメモリ リークを修復しようとしています。このコード行に問題があります

[appDelegate setPendingConnectionsArray:[[NSArray alloc]initWithArray:[response JSONValue]]];

ここで、 PendingConnectionsArrayはappDelegateで定義された NSArrayです。XCodeのアナライザーツールを使用してアプリを分析すると。次に、オブジェクトの潜在的なリークが表示されますが、それ以上の情報はありません。このリークの問題を解決するにはどうすればよいですか。

この線も同じ状況

phone_book_data.contact_image = [UIImage imageWithData:(NSData *)ABPersonCopyImageData(aSource)];

前もって感謝します。

4

3 に答える 3

0

前の例では、ARC を使用していないと仮定する必要があります。そのような場合、次のようにして解決します。

NSArray *array = [[NSArray alloc] initWithArray:[response JSONValue]];
[appDelegate setPendingConnectionsArray:array];
[array release];

または:

[appDelegate setPendingConnectionsArray:[[[NSArray alloc]initWithArray:[response JSONValue]] autorelease]];

または (JSONValue配列が不変の場合):

[appDelegate setPendingConnectionsArray:[response JSONValue]];

後者の例では、それが ARC の場合、所有権を譲渡してからクリーンアップさせます。

phone_book_data.contact_image = [UIImage imageWithData:(NSData *)CFBridgingRelease(ABPersonCopyImageData(aSource))];

しかし、MRC では、おそらく次のようにします。

CFDataRef dataRef = ABPersonCopyImageData(aSource);
phone_book_data.contact_image = [UIImage imageWithData:(NSData *)(dataRef)];
CFRelease(dataRef);

また

phone_book_data.contact_image = [UIImage imageWithData:[(NSData *)ABPersonCopyImageData(aSource) autorelease]];
于 2013-05-28T09:05:44.257 に答える
0

配列を割り当てたので、配列を解放する必要があります。

[appDelegate setPendingConnectionsArray:[[NSArray alloc]initWithArray:[response JSONValue]]autorelease];
于 2013-05-28T08:34:16.053 に答える
0

appDelegateの dealloc でPendingConnectionsArrayを解放する必要が あります

于 2013-05-28T08:32:10.527 に答える