0

저는 초보자로 개발 중이며 약 150 명의 ViewController를 보유한 응용 프로그램을 만들고 있습니다! 각각 UIImageView 있습니다.충돌 할 때까지 앱이 너무 많은 메모리를 사용 중입니다! (iPhone)

나는 약간의 테스트를 해왔고, 아이폰 자체에서 잠시 동안 앱을 사용하면 ViewControllers를 계속 볼 때 충돌이 발생합니다.

저는 장비에서 이것을 분석해 왔지만 누수가 없었지만 메모리 할당은 계속 올라갔습니다. 그리고 계속해서 iPhone에서 ViewControllers를 볼 때 사용량은 충돌 할 때까지 올라갑니다.

나는 앱이 단순히 너무 많은 메모리를 차지하고 있기 때문에 충돌이 일어나는 것이 분명하다고 생각합니다.

그래서 어떤 사람은 사전에

감사에는 충돌이 없을 것 있도록 메모리를 확보하기 위해 viewControllers을 해제하는 방법을 설명 할 수!

답변

0

첫 번째 질문은 150 개의 ViewController가 필요한 이유입니다. 150 가지 이미지를 표시 하시겠습니까? 그렇다면 여러 개의 ViewController를 사용할 수 없습니다. 이미지를 포함 할 UIScrollView를 사용해야 할 수도 있습니다 (물론 모든 이미지를 한꺼번에 읽을 수있는 것은 아닙니다. 지연로드 사용).

아마도 여러분의 경우에는 새로운 ViewController를 표시해야 할 때마다 "pushViewController"를 호출하지만 이전 ViewController를 해제하지는 않습니다. 이전의 모든 ViewController를 단순히 쌓고 포인터를 유지합니다.

네비게이션 컨트롤러의 작동 방식은 뷰 컨트롤러 배열을 가지고 있다는 것입니다. 새 뷰 컨트롤러를 표시 할 때마다 배열의 끝에 추가됩니다. "Back"을 클릭하거나 "popViewController"를 호출하면 배열의 마지막 항목이 제거되고 메모리에서 자동으로 해제됩니다.

이미지를 스크롤하는 데 UIScrollView를 만드는 방법을 배우려면 thisthis 질문을 참조하십시오.

+0

답장을 보내 주셔서 대단히 감사합니다. 전 여러 개의 viewControllers를 사용하지 말아야한다는 것을 알고있었습니다. 먼저 "pushViewController"를 호출 해보십시오. 유용할까요? 그럼 내 애플 리케이션을 다시 디자인하고 UIScrollView를 사용합니다 .. 정말 고마워요! :) –

+0

@AbdElrhmanRizk 아니요, 이전 ViewController에 대한 포인터를 유지하므로 "pushViewController"를 사용하면 안됩니다. UIScrollView를 사용하거나 현재 제시하고있는 이미지를 표시 할 다음 이미지로 바꾸십시오. 즉,'myImageView.image = [UIImage imageNamed : @ "NewPicName.png"]' –

+0

글쎄, 나는 UIScrollView를 사용할 것이다 .. 시간 내 주셔서 감사합니다. .. 행운을 비네;) –

관련 문제