2017-05-10 4 views
0

저는 Crashlytics에서 볼 수있는 로그를 기반으로하는 앱의 일부 문제를 디버깅하려고했습니다. 나는 종종 로그와 충돌을 가로 질러오고있다. 던져이러한 신속한 충돌은 무엇을 의미합니까?

libswiftCore.dylib -> swift_unknownRetain_n + 44 

libswiftCore.dylib -> swift_unknownRelease + 24 

예외는 두 경우 모두에서 EXC_BAD_ACCESS KERN_INVALID_ADDRESS했다.

나는 주로 블록을 사용할 때 그들을 본다. 나는 이것들이 세분화 오류라고 이해하지만 ARC가 이러한 오류를 막기 위해 메모리 관리를 정상적으로 처리하지 않아야합니까? 아니면 몇 가지 요점을 놓치고 있습니까?

+0

[다른 사용자가 이미이 링크를 확인하십시오 ** http : //stackoverflow.com/questions/35378756/dyld-library-not-loaded-rpath-libswiftcore-dylib* *] (http://stackoverflow.com/questions/35378756/dyld-library-not-loaded-rpath-libswiftcore-dylib) –

답변

0

이 충돌은 주로 메모리 누수로 인해 발생합니다. 변수 또는 객체가 제한된 메모리에 액세스하려고하면이 충돌이 발생합니다. 때로는 예고없이, 우리는 공개 된 객체에 접근하려고 시도 할 것입니다 (이 상황에서도 충돌이 발생할 수 있습니다). 예, 대부분의 경우 ARC이 메모리를 관리합니다. 걱정할 필요가 없습니다. 제한된 메모리에 액세스하고 있는지 확인하십시오.

블록 관련 문제 : 여기에서 핵심 사항을 확인했습니다. 블록 사용. 예, 블록을 사용할 때이 오류가 발생하는 부분이 있습니다. 이 블록에 대한 강력한 참조를 가진 외부 객체에 대한 강력한 참조가있는 블록을 사용하면 메모리 누수가 발생합니다. 블록이 다른 객체 (세 번째 역할)에 액세스하려고하면 같은 범위에 있고 동시에 살아 있다고 생각할 수 있습니다. 그러나 불행하게도 세 번째 역할은 할당 해제 될 수 있습니다. (세 번째 역할에 대한 참조가 약함)