2013-03-21 2 views
-4

imageNamed를 사용했지만 imageNamed는 캐싱을 피하기 위해 imageWithContentsOfFile :을 사용하여 이미지를 캐시합니다.어떻게이 코드를 개선 할 수 있습니까?

악기를 사용하면 시간이 많이 걸리는 것을 알 수 있습니다. 어떻게 이런 효과가 더 좋을까요?

enter image description here

+6

실제 코드를 텍스트로 붙여서 읽을 수 있도록 작성하십시오. – rmaddy

+0

물론, for 문을 사용하여 각 이미지를 반복하고 배열을 추가 할 수있는 것처럼 보일 것입니다. – Josiah

+0

대신 리소스 경로를 배열에 저장하십시오. 그런 다음 필요에 따라 이미지를 잡으십시오. – AMayes

답변

3

당신은 악기 프로파일이 알려주는 것을 오해 할 수있다 얻을. 4.3 %의 95 %는 그리 많지 않습니다. 그것은 무엇이 일어나고 있는지에 달려 있습니다. 심각한 속도 저하가 발생하지 않으면 불필요하게 최적화하지 마십시오!

실제 이미지 데이터의 배열이 필요한지 여부는 직접 묻는 질문입니다. 이미지 파일을 UIImage 데이터 비트 맵으로 압축 해제하는 데 정말로 심각한 시간이 걸립니다. (이 방법으로 메모리를 스스로 사용할 수 있다는 것은 말할 것도 없습니다.) 문자열 배열 (pathForResource 문자열)을 저장하고 필요할 때만 이미지를 가져 오지 않는 이유는 무엇입니까?

마지막으로 여기서 패턴을 보았습니다. 이미지 13, 이미지 12, 이미지 11 등을 가져 오는 중입니다. 따라서 수동으로 코드를 작성하는 것은 매우 어리 석습니다. 인덱스 번호를 알려 주면 알고리즘을 통해 이미지를 알 수 있습니다.

+0

감사합니다 !! 이것은 사진을 찍을 때의 애니메이션을 시뮬레이트하는 이미지입니다. –

+0

아마도'animatedImageNamed : duration :'을 고려해보십시오. – matt

0

당신은 압축되지 않은 버전의 메모리를 할당,이를 압축 해제에 모든 파일을 읽기, 배열에 저장하고 있습니다. 그들 모두를 앞에서 볼 필요가 있습니까? 한번에 모든 것을로드하는 대신 필요할 때로드 할 수 있습니까? 그러면 어레이를 초기화하면 큰 타격을 입을 수 있습니다.

또한 이미지가 실제로 표시되는 크기보다 큰지 확인하십시오. 큰 이미지 만로드하여 작은 영역에 표시하려면 큰 이미지를로드하고 압축을 푸는 데 시간이 오래 걸립니다.

0

[NSBundle mainBundle] pathForResource를 사용하여 교체하십시오 : ...이 코드 :

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath]; 

예를 들어 일부 이미지 파일 경로

UIImage *img= [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@\myImage.png",bundleRoot]]; 
관련 문제