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 외에 해당 주제에 대한 정보를 찾을 수 없습니다. 나는 Objective-C Automatic Reference CountingXCode에 설정했으나 거래의 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 상기 리사이징 이미지 코드하는 I 드래그 앤 드롭 피드백 이미지를 만들 때 사용하는 코드로 구성되는 . 'imgArtwork'은 UI의 Image Well 컨트롤을위한 속성입니다. –

+0

이 코드를 제공해 주셔서 감사합니다. 이제'set img to missing value'가 장기간에 메모리를 해제한다면 테스트를해야합니다. 고마워요 론! 나는이 메소드가'property NSImage : class "NSImage"라는 것보다 현명한 메모리가 아니라는 점에서'현재 애플리케이션의 NSImage 's .. '를 사용하지 않는다. – otakon

+0

@otakon 감사합니다. 코드가 작동 했으므로 위의 대답을 수락하십시오. ASObjC에서 구문을 수행하는 몇 가지 방법이 있으며, 일반적으로 동일한 결과를 제공하므로 원하는 스타일을 선택하십시오. –