2009-08-23 1 views
1

iPhone의보기 컨트롤러가 느슨하게로드되기 때문에 풍부한 그래픽 요소 (맞춤 그래픽 애셋)가있는 다양한 화면으로 이동할 때 처음으로 응답 속도가 느립니다. 미리 앱 이미지를 미리로드합니다. 즉, [UIImage imageNamed : ...]를 미리 호출하여 다음 번에 캐시 버전이라고 불릴 때 대신 사용합니다.게으른로드로 인해 iPhone 응용 프로그램의 반응이 느려집니다. 이미지를 미리 가져올 수 있습니까?

이 방법이 유용할까요? 풍부한 UI가 관련되어있는 뷰 컨트롤러로드 속도를 높일 수있는 다른 팁 (예 : 많은 맞춤 그래픽 애셋 사용)

답변

0

보내기 (Send) +[UIImage imageNamed:]로드하려는 이미지를 캐시합니다. 따라서이 메시지를 미리 보내면 이후 이미지 캡처 (캐시에 있다고 가정)가 문서에 따라 빨라집니다. imageNamed: 설명서는 here입니다.

0

미리보기 컨트롤러를로드 한 다음 [viewController보기]를 호출하여보기를 강제로로드 할 수도 있습니다.

이미지 또는 펜촉을 다른 스레드에서 호출하는 것이 안전하다는 보장이 없다고 생각합니다. init-viewDidLoad/etc가 주 스레드에서 실행될 것으로 예상되기 때문에 이미지로드가 이미지 캐시를 스레드로부터 안전하게 만들면 안전합니다 (NSMutableDictionary는 thread-safe IIRC 임).

메인 스레드에서 물건을 미리로드하면 UI가 차단됩니다. 예를 들어이를 완화 할 수 있습니다. performSelector : withObject : afterDelay : 및 작은 지연 (0.01? 0.1?); 아무런 보증도 없다는 점에 유의하십시오. OS 4에서는 [NSOperationQueue mainQueue]의 작업에서 각 이미지를로드 할 수 있습니다. 작업 우선 순위를 작게 (0 또는 0.1?) 설정하면 UI가 우선 순위를 갖도록해야합니다.

너무 많은 메모리를 사용하여 메모리 경고를받는다면 사전로드는 아무런 의미가 없습니다.

관련 문제