UIViewController에 이상한 (아닌?) 문제가있는 것 같습니다. 컨트롤러가 dealloc되었을 때 컨트롤러가 서브 뷰를 해제하지 않는 것으로 보입니다. NSLog 메시지를 뷰 컨트롤러뿐만 아니라 모든 하위 뷰의 dealloc 메서드에 배치했습니다. 뷰 컨트롤러 dealloc가 호출되지만 서브 뷰는 호출되지 않습니다. 그런 다음 해당보기 컨트롤러의 다른 인스턴스를 탐색 스택에 밀어 넣으면 이전 인스턴스의 모든 하위 뷰가 릴리스됩니다 (콘솔에 NSLog 메시지가 나에게 알려짐). 나는 체크하고 프리젠 테이션 뷰 컨트롤러 (푸싱을 수행하는 뷰 컨트롤러)의 사용자 정의보기 컨트롤러에 대한 별도의 참조가 없다.dealloc (ARC 사용)을 할 때 UIViewController 하위 뷰를 해제하지 않음
하나의 작은 (어쩌면) 세부 정보 : 사용자 정의보기 컨트롤러는 저장하고 팝핑하기 전에 실행하는 블록을 수신합니다. 그러나, 나는 그것에 nil을 보내었고 나는 같은 행동을한다. 또한, 제시된 View Controller는 스택을 팝했을 때 dealloc을 수행하므로 유지 사이클이 발생하지 않습니다.
또한 사용자 지정보기 컨트롤러의 dealloc 메서드에서 각 뷰를 명시 적으로 해제하려고 시도했습니다. 같은 행동.
네비게이션 컨트롤러가 계속 잡고있을 가능성이 있습니까? 내 다른 뷰 컨트롤러 중 하나에이 작업을 수행하지 않는 것 같습니다.
내 문제는이 모든 하위 뷰 중 메모리 누수를 나타냅니다. 누수가 쌓이지는 않지만 여전히 누수입니다. 당신은 어쩌면이 시도
최소한의 예제가 유용합니다. – Joe
@Joe에 동의하고 코드를 공유합니다. 특히 이전에 누출 된 블록에 문제가있었습니다. 코드 경로가 실행되지 않는 이상이 값을 0으로 설정하면 문제가되지 않습니다. – Sam
예제가 부족해 죄송합니다.하지만 총 두 줄의 클래스 (약 1,000 줄의 코드)와 관련이 있습니다. 코드에서 문제가 발생하는 위치를 알 수 없습니다. –