2011-03-08 5 views
1

My Cocoa 응용 프로그램은 지정된 폴더의 모든 파일에 대한 파일 아이콘을 표시합니다. 나는 아이콘 이미지를 얻을이 코드를 사용하고 있습니다 : 일단 한 동안iconForFile] 0 표현이있는 이미지를 반환합니다.

NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:thePath]; 

를, 반환 된 아이콘이없는 (0) 이미지 표현이 없지만 32 × 32로 설정된 크기 (문서로 기본 크기를 말한다) 다른 번에 올바른 아이콘 (Finder에 표시된대로)이 반환됩니다. 사파리 .webarchive : 항상 같은 파일,

나는 nil를 확인하는 데 사용하지만 이미지가 ' "비어있는 것을 발견 할 때까지 내 응용 프로그램 말하자면, 나중에 충돌 할

를이 발생합니다. (이 폴더에는 두 개의 웹 아카이브가 있으며 첫 번째 아이콘이 표시됩니다.)

위의 코드에 대한 특별한 내용이 있습니까?이 코드는 백그라운드 스레드에서 실행 중입니다. UI 요소가 해당 스레드에서 업데이트되지 않아서 왜 문제가되는지 상상해보십시오.

감사합니다! Mark .

답변

0

크기가 == NSZeroSize이거나 이미지 담당자의 수가 0 인 경우 등 몇 가지 조건을 확인해야하는 것처럼 들리지만 반환 된 NSImage가 표시 될 때 사용할 수있는 자리 표시 자 이미지가 있어야합니다. 유효하지 않다.

+0

그래, 그게 내가 현재하고있는 일이다. ([icon representations] count]> 0 (크기는 32x32)이다.하지만 두 번째 .webarchive의 실패 이유를 알고 싶다. 첫 번째 아이콘 ... 매우 이상합니다. – Mark

+0

그 이유는 확실하지 않습니다. 파일을 어떻게 만들었습니까? Safari를 직접 사용 했습니까? 아니면 AppleScript를 사용 했습니까? 또 다른 방법은 사전을 만드는 것입니다. 파일 확장자를 키로 사용하여 NSImages를 추출하고 NSImage가 유효하지 않은 경우이 캐시를 사용하십시오 .Firector가이 파일의 올바른 아이콘을 표시합니까? – Mark

+0

Safari를 사용하여 직접 파일을 생성했습니다. 그 두 번째 파일에 대해, 그렇지 않은 다른 시간입니다. 나를 혼란스럽게하는 것은 iconForFile :에 대한 호출이 실패하지 않고 nil을 반환하지만 사용할 수없는 NSImage를 반환한다는 것입니다. – Mark

관련 문제