3

Web から常に新しい画像データを読み込む方法があります。画像のすべてのデータが到着すると、次のようにデリゲートに転送されます。

NSImage *img = [[NSImage alloc] initWithData:dataDownloadedFromWeb];
if([[self delegate] respondsToSelector:@selector(imageArrived:)]) {
    [[self delegate] imageArrived:img];
} 
[img release]; 

画像データではimageArrived:、次のものが割り当てられますNSImageView

- (void)imageArrived:(NSImage *)img
{
    [imageView1 setImage:img];
}

これはうまく機能し、新しいダウンロード サイクルごとに画像が表示され、更新されます。リークがないことを確認するために、Instruments を使用してアプリケーションのプロファイルを作成しました。リークは表示されません。ただし、Instruments のアクティビティ モニターで確認すると、アプリケーションが時間の経過とともにメモリを取得し、ダウンロードした画像のサイズが大まかに増加していることがわかります。を省略した場合[imageView1 setImage:img]、メモリ使用量は一定のままです。私の質問は次のとおりです。それはどのように起こっていますか?私のコードは漏れていますか?NSImage内のインスタンスはNSImageView、データをいつ解放するかをどのように決定しますか? 回答ありがとうございます。

4

1 に答える 1