2016-07-07 2 views
1

私は各行に小さな画像を表示してテーブルビューを作成しています。 data sourceは、テーブルの各行のイメージを保持します。私はset img to NSImage()'s alloc()'s initWithContentsOfFile_(thePath)を通して画像を作成します。次に、選択した行の画像をブラウザのビューで表示します(set imageView's image to img)。問題は、両方のビューで同じ表現を使用するため、メモリが不足していることです。 (画像は約500x400です)。 私はより大きなバージョンからより小さなバージョンを作成し、より大きなイメージをリリースする方法を理解しようとしています。AppleScriptObjCのNSImage release()

私は画像を公開し始めました。 私はimg's release()を試しましたが、機能しませんでした。 Garbage Collection, ARC, and managing memory以外の話題に関する情報は見つかりませんでした。私はXCodeObjective-C Automatic Reference Countingをオンにしましたが、取引のAppleScriptの部分にはおそらく適用されません。純粋なApplescriptObjCでそれを達成する方法はありますか?

答えて

0

(あなたの変数名とUI制御特性を調整し)、このコードを試してください:

set curImage to current application's NSImage's alloc()'s initWithContentsOfFile:thePath 

-- create a smaller image 

set newImage to current application's NSImage's alloc()'s initWithSize:{48, 48} 

newImage's lockFocus() 

curImage's drawInRect:{{0,0}, {48, 48}} fromRect:{{0,0},{0,0}} operation:2 fraction:1.0 

newImage's unlockFocus() 

imgArtwork's setImage:newImage 

set curImage to missing value -- release large image 
+0

@otakonを、上記画像サイズ変更のためのコードは、私は、ドラッグアンドドロップフィードバック用の画像を作成するために使用するコードから適合されています。 'imgArtwork'は、UIのImage Wellコントロールのプロパティです。 –

+0

このコードをありがとう、それは働いた!今、私は 'set img to missing value'が長期的にメモリを解放するかどうかテストする必要があります。ありがとうRon!私は '現在のアプリケーションのNSImage'を使用しません。このアプローチは' property NSImage:class "NSImage" 'とは異なるメモリです。 – otakon

+0

@otakonありがとう、コードが機能して以来、上記の答えを受け入れてください。 ASObjCで構文を実行するにはいくつかの方法があり、通常は同じ結果が得られますので、好みのスタイルを選択してください。 –

関連する問題