AppleScriptObjC中的NSImage release()

时间:2016-07-07 21:26:01

标签: memory-management release nsimage applescript-objc

我正在创建一个表视图,每行显示一些小图像。 data source保存表格每行的图像。我通过set img to NSImage()'s alloc()'s initWithContentsOfFile_(thePath)创建图像。接下来,我通过set imageView's image to img在更大的浏览器视图中显示所选行的图像。问题是我的内存不足,因为我对两个视图使用相同的表示。 (图像大约为500x400)。 我试图弄清楚如何从较大的版本制作较小的版本,然后发布更大的图像。

我从发布图片开始.. 我试过img's release()但是没有用。除Garbage Collection, ARC, and managing memory之外,我无法找到有关该主题的任何信息。我在Objective-C Automatic Reference Counting中启用了XCode,但它可能不适用于Applescript部分的交易。有没有办法在纯ApplescriptObjC中实现它?

1 个答案:

答案 0 :(得分: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