문제

테스트를 위해 3G 장치를 사용하여 애플리케이션을 개발했습니다.테스트를 위해 이것을 친구에게 주었을 때, 그는 그것이 충돌한다는 것을 알아차렸습니다.. 충돌 로그를 살펴봤지만 몇 가지 메모리 경고 후 "EXC_BAD_ACCESS" 문을 제외하고는 별로 쓸모가 없습니다.

내 장치에서는 imagePicker를 많이 사용할 수 있으며 사진을 찍을 때마다 메모리 경고가 표시되지만 이는 문제를 일으키지 않습니다.

내 친구의 기기(3G)에서 카메라에서 몇 장의 이미지를 선택한 후 앱이 충돌합니다.

그래서 내 질문은 ..나 생각하다 메모리 경고로 인해 무언가 할당이 해제되고 있습니다. 하지만 내 친구의 장치에서만 가능하며 할당 해제 후에 다시 사용하려고 합니다.어떤 객체가 호출되는지 어떻게 알 수 있나요?NSZombies는 원격(베타) 장치이기 때문에 사용할 수 없습니다.

도와주세요!

또한 내 장치는 문제 없이 이미지를 계속 선택할 수 있는데 그 사람은 선택할 수 없는 이유를 아는 사람이 있다면... 그게 가장 도움이 될 것입니다.

감사해요!

편집하다:새로운 발견..나에게도 다음과 같은 오류 메시지가 나타납니다.KERN_PROTECTION_FAILURE는 데이터 액세스와 관련된 것으로 이해됩니다.UIImagePicker에서 가져온 이미지를 저장한 직후에 충돌이 발생하는 것 같습니다.어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

당신은 무언가를 과도하게 출시하고 있을 수 있습니다.Snow Leopard를 실행 중인 경우 정적 분석기(Cmd-Shift-A)를 실행하고 메모리 오류를 찾으십시오.

메모리 오류 후 충돌이 발생한다는 사실은 UIViewController가 해당 뷰를 해제했음을 의미합니다.NSNotification을 관찰하는 UIViewController가 있거나 화면 밖에 있는 동안 IBOutlet을 변경할 수 있습니까?이것이 이런 종류의 충돌의 일반적인 원인입니다.당신이 있는지 확인하십시오 IBOutlets를 올바르게 관리하는 메모리.UIViewController는 화면 밖에 있을 때 IBOutlet(또는 UI 구성 요소)을 조작해서는 안 됩니다.이러한 실수를 하지 않더라도 위 링크에 명시된 대로 구현하지 않으면 메모리 경고 후에 여전히 충돌이 발생할 수 있습니다.

MemoryWarning은 꽤 좋은 아이디어였고 상황이 개선되었지만 Apple은 여전히 ​​UIViewController와 함께 작동하는 방식과 관련된 모든 문제를 해결하지 못했습니다.개발자는 여전히 매우 조심해야 합니다.

다른 팁

친구가 컴퓨터에 와서 nszombieenabled로 실행하도록해야합니다. 이것이 이러한 문제를 디버깅하는 가장 좋은 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top