상당히 큰 코드 세트의 어딘가에 스레드 안전 버그가 있습니다. 시뮬레이터에서 수초 동안 내 CATiledLayer
에서 스크롤하여 랜덤 크래시로 재현 할 수 있으며, 단일 스레드로 내 드로잉 코드를 잠그면 해결할 수 있습니다 (이상적이지 않습니다. CATiledLayer는 멀티 스레드 및 드로잉으로 설계되었으므로 이상적이지 않습니다). 코드가 충분히 느리다).iOS에서 디버그 스레드 안전 문제
스레드 안전 문제를 디버깅하려면 어떻게해야합니까? 그게 내 코드 어딘가에 느슨하게 가져올 (및 캐시) 데이터를 그릴 수 의심되는 있지만 그 많이 좁히지 않습니다.
동시성 프로그래밍 가이드를 읽지는 않았지만 디버깅에 대해 이야기하는 내용이 전혀 없으며 코드 구조화 방법에 대해서만 설명합니다.
잠시 동안 회전하고 정적 이미지를 반환하는 간단한 코드로 "그려지는 데이터를 지연 게 처리 (및 캐시)하는 코드"를 대체 하시겠습니까? –
데이터는 몇 기가 바이트의 벡터 데이터 (지도)입니다. 나는 RAM에이 모든 것을 저장할 수 없으며 벡터가 아닌 비트 맵 이미지 인 경우 iOS 장치에 맞지 않을 수도 있습니다. –
실제 데이터를 반환 할 필요는 없습니다. 더미 데이터를 반환하는 * 단순한 * 메서드 여야합니다 (이상적으로 "실제"데이터를 반환하는 것과 거의 같은 시간/CPU를 사용하는 것이 좋습니다) 원래 메서드에서 문제인지 확인하는 것이 좋습니다. –