2

저는 현재 일부 사람들과 ios 프로젝트를 진행 중입니다. 우리 중 한 명이 앱의 일부로 ARC를 사용하기로 결정했습니다.NSZombie가 ARC로 EXC_BAD_ACCESS를 지적하지 않을 수 있습니까?

배경에서 되돌아 올 때 Unfotunatly, 현재 일부 충돌이 발생합니다.

여기에 우리가 응용 프로그램을 충돌 위해 따라야하는 단계는, 우리는 IOS-시뮬레이터를 수행

    이 (ARC로 코딩)
  1. 가의 ViewController (A)에 도착 응용 프로그램
  2. GET을 시작
  3. ViewController B (ARC로 코딩되지 않음) - 솔직히 말해서 은 관련성이 있음을 알고 있습니다.)
  4. 응용 프로그램을 백그라운드로 둡니다.
  5. 이 응용 프로그램을 다시 (시뮬레이터로 들으)
  6. 시작을 경고 메모리를 시뮬레이션, 우리는
  7. 가의 ViewController (A)에 되돌려과 주요 기능을 가리키는
  8. 응용 프로그램이 충돌을 이동의 ViewController B에있을거야 우리는 YES로 NSZombieEnabled를 사용하려고 않았지만, 우리가 그것을 할 때, 응용 프로그램이 충돌하고 완벽하게 실행 유지, 그래서 NSZombieEnabled가 잘 작동하지 않을 가능성이있을 경우 우리가 궁금하지 않습니다

EXC_BAD_ACCESS 호?

누가 ARC와 NSZombieEnabled에 대해 빠르고 명확한 통찰력을 줄 수 있다면, 나는 그것이 어떻게 작동하는지 알 것 같지만 분명히 뭔가를 놓치고 있어야합니다.

어쨌든 도와 주셔서 감사합니다.

답변

0

NSZombieEnabled를 사용하는 것보다 프로젝트를 프로파일 링하고 좀비 도구를 사용해야합니다. 똑같은 일을 할 때 멈추고 "좀비 메시지"라고 말해야합니다. 여기서는 화살표를 클릭하여 좀비 인 클래스를 볼 수 있으며 할당 된/할당 취소 된 위치를 볼 수 있습니다.

충돌이 ARC와 관련이 없다고 생각합니다. 대신 viewDidUnload에서 무언가를 할당 해제하고 nil에 대한 참조를 설정하지 않습니다. 돌아 왔을 때 잘못된 참조를 사용하려고합니다.

아마 모든 것이 ARC를 사용하면이 같은 문제를 치료하는 데 도움이되므로 더 좋을 것입니다 (버그는 ARC가 아닌 코드에서 발생할 가능성이 큽니다).

+0

답을 찾아 주셔서 감사합니다. 문제가있는 것으로 알고 있습니다. viewDidUnload에서 nil로 설정되지 않은 속성이었습니다. 실제로는 좀 더 복잡합니다. 그것은 iCarousel 뷰 (라이브러리)에서 사용 된 요소들을 비동기 적으로 이미지를로드하는 배열이었고 viewDidLoad에서 해당 배열을 재설정하는 함수를 호출 했으므로 모든 요소가 해제되고 이미지가로드되었을 때 그것은 부서지고 있었다. ARC가 NSZombie의 작동을 피하지 않는 것 같습니다.이 경우 코드에서 충돌 항목을 명시 적으로 참조하지 않았기 때문입니다. – Saliom

관련 문제