2012-04-02 2 views
1

ARC를 사용하는 데 문제가 있습니다.ARC dealloc가 mainthread 이외의 스레드에서 호출되었습니다.

주 스레드가 아닌 다른 스레드에서 내 dealloc 메서드가 호출 될 때마다 액세스가 잘못되었습니다. 주 스레드 또는 웹 스레드 이외의 스레드에서 웹 잠금을 얻으려고했습니다. 이것은 보조 스레드에서 UIKit을 호출 한 결과 일 수 있습니다. 지금 오류가 발생했습니다 ...

내 컨트롤러에서 작동하는 webview beeing이 발생했기 때문에 놀랄 일이 아닙니다. 대부분의 경우, 내 시스템을 normaly로 사용할 때 dealloc이 mainThread에서 호출되지만, 원숭이를 수행하고 푸시하고 내 컨트롤러를 매우 빨리 팝하면 다른 스레드에서 dealloc이 호출 될 수 있습니다.

나는 mainthread가 아니라면 dealloc을 피하는 방법을 찾으려고 노력했지만 ARC 컴파일로는 길을 찾을 수 없었다.

그래서 내 컨트롤러에서 내 webview에 갇혔습니다. 당신의 도움이

편집 할

감사 : 여기 내 BT 당신은 아마 당신이 그것을 할당 해제하기 전에 무기 호에있는 UIWebView 대리자를 설정해야 enter image description here

답변

0

입니다.

+0

위임자는 약한 참조입니다. 약한 참조는 참조 횟수에 영향을주지 않습니다. 참조 된 약한 변수가 할당 해제 된 객체는 자동으로 nil로 설정됩니다. – AntiMoron