2012-08-10 4 views
1

저는 IOS에 익숙하지 않으며 PC에서 왔습니다. 메모리 및 배터리 리소스 관리에 대한 느낌을 얻으려고합니다.IOS 메모리 및 배터리 관리 - 메모리 대 작업

매우 가벼운 UIImageView 하위 클래스가 있습니다 (소수의 메서드가있는 이미지 자리 표시 자임). 이 하위 클래스는 여러 루트보기에 반복적으로 추가되거나 제거됩니다. 각 루트보기에서 하위 클래스에 대한 IBOutlet 참조를 보유합니다.

겠습니까 당신 :

  • 단순히 루트 뷰에서 서브 클래스를 제거 (메모리에 보관)/추가?

또는

  • 만들고 서브 클래스 인스턴스마다 (메모리 만 추가 작업을 자유롭게)를 파괴?

아무 가치가 없습니까?

UIImageView 하위 클래스가 매우 큰 경우 대답은 같을까요?

이러한 문제를 측정하는 방법이 있습니까?

+0

반복적으로 사용하고 있기 때문에 인스턴스를 유지한다고 말하고 싶습니다. 정말로 걱정이된다면 언제든지 계기에서 앱을 프로파일 링하여 누출을 발견 할 수 있으며 기기에 있다면 계측기를 사용하여 배터리 소모량을 측정 할 수 있습니다. – CBredlow

답변

0

첫 번째 옵션을 사용하여 메모리에 보관합니다. 이는 내 견해를 유지하고 재사용하는 것이 편리하다고 생각하기 때문입니다. 이것은 그들의 상태와 내용을 기억할 것이며 많은 경우 도움이된다는 것을 의미합니다. 나는 보통 내용을 재설정하거나 필요할 때 새로 고침하는 메소드를 작성합니다.

메모리에 저장하면보기의로드가 약간 증가 할 수 있지만 보통 차이점을 느끼지 못하고 두 가지 방법으로 사람들을 보게됩니다.

네, 당신이이 결정이 배터리에 영향을 미칠 것이라고 생각한다면 특히 걱정이 많을 것이라고 말하고 싶습니다.

메모리 관리와 관련하여 이미지 뷰를 메모리에 보관하거나 해제/재생성하는 것은 사용중인 이미지 뷰가 하나만있는 한 정확히 동일한 메모리 양을 사용합니다. 유일한 차이점은 재 작성하는 경우 반복적으로 할당하고 해제한다는 것입니다.

사용자가 이미지 뷰를 열 때마다 이미지 뷰를 새로 만들면 메모리 문제가 발생할 수 있지만 프로그래밍에서 근본적으로 잘못된 일을한다는 것을 의미합니다.

당신이하고있는 것을 알고있는 한, 이와 같은 경우에 메모리 양에 대해 걱정할 필요가 없습니다. 충분히 있습니다. 큰 이미지를 처리하는 경우 걱정하지 마십시오.

특히 ARC를 사용하면 걱정할 필요가 없습니다. 해킹을 시작하십시오. 수동으로 메모리를 관리하는 경우 두통과 거대한 누출의 위험이 적기 때문에 물건을 다시 사용하는 것이 좋습니다. 누수 도구를 사용하고 도구를 분석하여이 경우를 확인하십시오.

2

일반적으로 iOS에서는 무시하고 UIImageView을 사용할 수 있습니다. UIImageView은 이미지 처리 방법이있는 클리핑 영역에 지나지 않습니다.

더 많은 메모리를 차지하는 리소스는 UIImageView에 포함 된 UIImage이며 iOS에서 캐시합니다.

UIImageViews을 작성하는 데 드는 비용이 거의 들지 않으므로 메모리를 dealloc 처리하고 메모리가 누출되지 않도록주의하십시오. 사용자가 수백 개가 아니면 예외가 아닙니다.

"큰"하위 클래스는 문제가되지 않지만 클래스의 코드는 두 번 이상로드되지 않습니다. 클래스에 여분의 상태가 많이있는 경우 - 일부 메모리는 차지하지만 이미지는 전체적으로 많이 캔트하지 않습니다. UIImageView.

1

더 잘 기억하면됩니다. 지속적으로 이미지보기를 재생하여 장치 속도를 늦추지 않으면 사용자 경험이 훨씬 향상됩니다. 하나의 열악한 UIImageView 인스턴스는 시간과 노력을 항상 가치있게 생각할 정도로 무겁지 않습니다.

1

성능 향상을위한 기억을 유지하는 것은 생각한 것만 큼 다른 답변에서 가져온 것이 아닙니다. 그러나 메모리 경고를 받으면 메모리에서 제거하고 필요에 따라 다시 사용할 수있는 방법을 제공해야합니다.