2017-12-09 6 views
-2

목표로드 할 때 다음 Assets.xcassets 폴더에서 메인 스토리 보드에서 이미지 뷰에iOS 앱 충돌 이미지를

  1. 프로그래밍 방식으로 첫 번째 이미지 (약 94킬로바이트를)로드 (아래 코드 참조) - 완벽한
  2. 를 작동 그런 다음 원본 UIImage에 두 번째 이미지 (동일한 크기)를로드하면 iOS 앱이 충돌합니다. 프로그래밍은 메모리 부족 경고를 던져 장치를 야기 같은있는 UIImage에 두 번째 이미지를로드 할 경우

    mainImageView.image = UIImage(named:"FirstImage.png") // load first image, no issues 
    

    와 아이폰 OS 앱 충돌 : 여기

내 코드입니다 : 정말이에요 후

mainImageView.image = UIImage(named:"SecondImage.png") // load second image 
+1

이 우리에게 스택 추적을 제시해주십시오 데 도움이

func applicationDidReceiveMemoryWarning(application: UIApplication) { NSURLCache.sharedURLCache().removeAllCachedResponses() } 

희망을. –

+1

두 번째 이미지로드시 더 많은 코드 표시. 오류는 다른 곳에서 발생해야합니다. – Vimal

답변

0

딩 SO 및 다른 기사에 대한 답의 번호 (아래 참조), 당신은 애니메이션 배열로 여러 개의 이미지를로드 할 때 메모리를 관리 할 수있는 가장 좋은 방법은 contentsOfFile: imageName 대신 여기 UIImage(named:"FirstImage.png")

페이지의 제의 사용하는 것입니다

http://www.alexcurylo.com/2009/01/13/imagenamed-is-evil/

그리고 둘째로 애플은 다음 상태 :

일치하는 이미지 객체가 캐시에 이미 없는 경우이 방법을 찾아 이미지 날엔로드 디스크 또는 사용 가능한 자산 카탈로그에서 을 가져온 다음 결과 개체를 반환합니다. 시스템은 언제든지 에 캐시 된 이미지 데이터를 제거하여 메모리를 비울 수 있습니다. 퍼지는 캐시에 있지만 현재 사용되지 않는 이미지에 대해서만 발생합니다. iOS 9 이상에서는이 메서드가 스레드로부터 안전합니다. 특별 고려 사항 파일을 한 번만 표시하고 해당 이미지가 이 시스템 캐시에 추가되지 않도록하려는 경우 imageWithContentsOfFile :을 사용하여 이미지를 작성해야합니다. 이렇게하면 시스템 이미지 캐시에서 단일 사용 이미지가 유지되어 잠재적으로 메모리가 향상됩니다. 앱의 특성을 사용합니다.

https://developer.apple.com/documentation/uikit/uiimage/1624146-init

마지막으로, 당신은 또한 다음과 같은 기능을 만들 수 있습니다 경고 메모리를 받으면이 다른 사람 :