2009-10-08 3 views
3

오픈 소스 iMedia 프레임 워크 프로젝트 (현재 수십 명의 개발자가 사용하고 있음)를 다시 작성하기 위해 IKImageBrowserView로 전환하고 캐싱에 문제가 있습니다.IKImageBrowserView가 사전로드 예약을하지 않습니다.

IKImageBrowserView는 이미지의 캐시를 우선 순위가 낮은 백그라운드 작업으로 미리 볼 수 있고 프리 페치하는 것이 좋지만 보이지 않는 많은 항목이 있습니다. 도움이 될만한 CPU (및 원격 검색 이미지 용 네트워크)를로드하고 싶지 않다는 점을 제외하고는 유용 할 수 있습니다.

특히 FIFO 캐시 메커니즘이 있으므로 (즉, 미리보기 이미지 데이터를 다른보기와 동일한 데이터로 공유 할 수 있기 때문에) 캐시를 최대 용량까지 채운 다음 이전 항목을 덤핑.

이 프리 로더의 일정을 사용하지 않도록 설정할 수있는 방법이 있습니까? (우리가 지금 당장 사용할 수있는 문서화되지 않은 API가 있더라도이 위험한 기능을 끄는 것이 매우 중요하기 때문에 공용 API로 만들 것을 요청할 것입니다.)

이것은 많은 응용 프로그램에 실제로 영향을줍니다. 제안 할 수있는 모든 해결 방법은 대단히 감사하겠습니다.

BTW 일부 관련 토론 : http://lists.apple.com/archives/cocoa-dev/2007/Nov/msg02011.html

+0

출원. 제발! http://www.openradar.appspot.com/radar?id=88402 – danwood

답변

4

나 자신을 IKImageBrowserView을 사용하기 시작했습니다, 나는 전에이를 발견하지했지만, 실제로 나는 그것을 밖으로 시도하고 내 자신의 응용 프로그램과 같은 동작을보고 있어요 .

_shouldProcessLongTasks라는 IKImageBrowserView에 개인 메소드가있는 것 같습니다. 나는 단지 NO를 반환하기 위해 그것을 오버라이드 해봤고 뷰에 아직 보이지 않는 이미지에 대한 프리 로딩 동작을 막는 것처럼 보입니다 (적어도 Snow Leopard 아래에서는 동작이 동일한 지 Leopard에서 테스트해야 함) . 메소드가 변경되면 간단하게 더 이상 호출되지 않으므로 상당히 위험이 낮은 private API 사용법처럼 보입니다. 이 문제에 대해 Apple에 버그를 신고하면 레이더 번호를 게시하여 영향을받는 다른 사람들이 속임수를 제출하고이를 위해 공용 API 및/또는 동작 변경을 시도 할 수 있도록하십시오.

레코드의 경우 현재 동작은 응용 프로그램이 포 그라운드에 있고 뷰를 포함하는 창이 키인 경우 백그라운드에서 물건을 미리 가져 오는 것 같습니다. 다른 앱이나 창으로 전환하면 미리로드가 중단됩니다.