My Cocoa 응용 프로그램은 지정된 폴더의 모든 파일에 대한 파일 아이콘을 표시합니다. 나는 아이콘 이미지를 얻을이 코드를 사용하고 있습니다 : 일단 한 동안iconForFile] 0 표현이있는 이미지를 반환합니다.
NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:thePath];
를, 반환 된 아이콘이없는 (0) 이미지 표현이 없지만 32 × 32로 설정된 크기 (문서로 기본 크기를 말한다) 다른 번에 올바른 아이콘 (Finder에 표시된대로)이 반환됩니다. 사파리 .webarchive
: 항상 같은 파일,
nil
를 확인하는 데 사용하지만 이미지가 ' "비어있는 것을 발견 할 때까지 내 응용 프로그램 말하자면, 나중에 충돌 할
를이 발생합니다. (이 폴더에는 두 개의 웹 아카이브가 있으며 첫 번째 아이콘이 표시됩니다.)
위의 코드에 대한 특별한 내용이 있습니까?이 코드는 백그라운드 스레드에서 실행 중입니다. UI 요소가 해당 스레드에서 업데이트되지 않아서 왜 문제가되는지 상상해보십시오.
감사합니다! Mark .
그래, 그게 내가 현재하고있는 일이다. ([icon representations] count]> 0 (크기는 32x32)이다.하지만 두 번째 .webarchive의 실패 이유를 알고 싶다. 첫 번째 아이콘 ... 매우 이상합니다. – Mark
그 이유는 확실하지 않습니다. 파일을 어떻게 만들었습니까? Safari를 직접 사용 했습니까? 아니면 AppleScript를 사용 했습니까? 또 다른 방법은 사전을 만드는 것입니다. 파일 확장자를 키로 사용하여 NSImages를 추출하고 NSImage가 유효하지 않은 경우이 캐시를 사용하십시오 .Firector가이 파일의 올바른 아이콘을 표시합니까? – Mark
Safari를 사용하여 직접 파일을 생성했습니다. 그 두 번째 파일에 대해, 그렇지 않은 다른 시간입니다. 나를 혼란스럽게하는 것은 iconForFile :에 대한 호출이 실패하지 않고 nil을 반환하지만 사용할 수없는 NSImage를 반환한다는 것입니다. – Mark