일부 ViewController 사이를 전환하는 탐색 기반 앱이 있습니다. "goHome"버튼을 누르면 popViewControllerAnimated:
메서드가 호출되고 기본 화면으로 돌아갑니다. 그러나 문제가 있습니다 : dealloc 메소드가 호출되지 않았거나 이전 뷰의 모든 요소가 해제되지 않았습니다. 모든 애니메이션/UI 요소는 메모리에 매달려 있습니다. 어떻게해야합니까? 당신의 UIViewController에서IOS dealloc이 호출되지 않습니다.
답변
먼저 자동 참조 횟수로 전환하면 더 쉽게 사용할 수 있습니다. 둘째, 컨트롤러 나 다른 객체에 대한 참조가 더 이상 존재하지 않는지 확인하십시오.
재미있는 이야기, 한 번 NSFetchedResultsController
의 델리게이트를 nil 및 기타 메모리 오류로 설정하는 것을 잊었으며 페치 된 결과 컨트롤러가 델리게이트를 호출하려고했지만 이미 사라진 경우 추한 예외가 발생했습니다.
ARC에는 누출에 대한 문제가 거의 없습니다. 약간 적은 코드 만 작성하면됩니다. Obj-C의 초보자는 ARC에서 무슨 일이 일어나고 있는지 이해하려면 MRC로 시작해야합니다. – Sulthan
참조 카운팅과 그주의 사항을 이해하기 위해 C에서 직접 수동으로 구현하는 것이 좋습니다. 많은 결과물로 인해 진행 상황을 볼 수 있습니다. ARC가없는 Objective C는 오히려 무의미한 느낌을줍니다. Objective C의 목표 인 Cocoa와 Grand Central Dispatch의 수동 유지 및 해제 호출과의 갭은 오래 동안 충분히 추악한 역설이었습니다 ... – yeoman
수동 메모리 관리 이해 C만으로는 여전히 충분하지 않을 것입니다. ARC가 Obj-C/Swift interop에도 영향을주는 명명 규칙을 사용하는 것도 있습니다. ARC는은 총알이 아니지만 지옥이 많은 도움이 될 것이라고 확신합니다. – themarketka
당신의 dealloc 올바른 서명이 마지막 슈퍼 뷰 호출되어 있는지 확인합니다 :
- (void) dealloc {
//Release your stuff
[super dealloc];
}
는 또한 UIViewControllers를 처리 할 때 당신은뿐만 아니라 viewDidUnload 메모리 다룰 필요가 기억을 (아무튼 당신의 문제를 실제로 해결하지는 못했지만 거기에 던질 것이라고 생각했습니다.)
그게 정확히 내가 사용하고 여전히, 아무것도. NSLog를 테스트 해봤는데 호출되지 않았습니다. – Teo
- 1. Dealloc이 호출되지 않습니다.
- 2. UITableView의 Dealloc이 호출되지 않았습니다.
- 3. Cocos2d 장면의 dealloc이 replaceScene 다음에 호출되지 않습니다
- 4. UIViewController 및 UIview dealloc이 호출되지 않습니다.
- 5. 슈퍼 클래스에서 Dealloc이 호출되지 않았습니다.
- 6. ios applicationwillenterbackground가 호출되지 않습니다.
- 7. Cocos2d : 릴리스를 호출 한 후 dealloc이 호출되지 않습니다.
- 8. 내 클래스의 dealloc이 호출되지 않는 이유는 무엇입니까?
- 9. iOS IBAction 메서드가 호출되지 않습니다.
- 10. ARC를 사용할 때 클래스 dealloc이 호출되지 않는 이유는 무엇입니까?
- 11. iphone SDK : UIView dealloc이 (가) 호출되지 않았습니다. 왜?
- 12. iPhone에서 dealloc이 호출됩니까?
- 13. iOS Webview에서 자바 스크립트 메소드가 호출되지 않습니다.
- 14. iOS 4.2에서 viewWillAppear 메서드가 호출되지 않습니다.
- 15. superview (UIViewController) dealloc 때 subview에서 dealloc이 호출되지 않았습니다
- 16. 새 프로젝트 (xcode 3.1.4)에서 dealloc이 호출되지 않는 이유는 무엇입니까?
- 17. didReceiveAuthenticationChallenge가 호출되지 않습니다.
- 18. Cocos2d에서 장면을 바꿀 때 dealloc이 실행되지 않습니다.
- 19. dealloc이 호출되고 있는데 이유가 확실하지 않습니다
- 20. iOS remoteControlReceivedWithEvent가 호출되지 않았습니다.
- 21. UIViewController viewDidLoad가 호출되지 않습니다.
- 22. 모션 콜백이 호출되지 않습니다.
- 23. UITapGestureRecognizer의 대상이 iOS 5에서 더 이상 호출되지 않습니다.
- 24. fbDidLogin가 호출되지 않습니다 (페이스 북-IOS-SDK)는
- 25. iOS : viewWillDisappear가 다른 View Controller에서 popViewControllerAnimated에 호출되지 않습니다.
- 26. viewWillAppearance는 viewController를 모달로 표시 할 때 호출되지 않습니다. (iOS)
- 27. iOS 6, Segue : 처음에 UITableViewCell을 탭하면 prepareForSegue가 호출되지 않습니다.
- 28. dylib 소멸자가 호출되지 않습니다.
- 29. scrollViewDidEndDecelerating이 호출되지 않습니다.
- 30. willRotateToInterfaceOrientation이 호출되지 않습니다.
이것은 누출입니다. 누출의 원인을 푸가해야합니다. 도구 유출 도구가 도움이 될 것입니다. – wbyoung