iOS6 viewDidUnload 사용되지 않음
아마도 이것은 나쁜 습관이지만 내가 읽은 문서에서 어떤 경우에는 viewDidLoad 메서드 내부에서 객체를 초기화하고 viewDidUnload에서 nil에 대한 조언을 얻었습니다.
예를 들어 관찰자를 추가하는 것과 같은 것이 있다면
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(filterready:)
name:@"filterReady"
object:nil];
이제 Observer를 제거하는 방법이 없지만 뷰가 표시 될 때마다 viewDidLoad가 호출되어 잠시 후 여러 관찰자가 실행되고 선택기가 여러 번 호출됩니다.
일부 클리너를 viewDidDisappear 메서드로 이동하여이 문제를 해결할 수 있지만 이제 올바른 작업을 수행하고 있는지 의심 할 여지가 있습니다.
내 샘플에는 하위 탐색을 제어하는 여러 탐색 컨트롤러가 있지만 참조되지 않더라도 dealloc이 호출되지 않습니다.
- (void)didReceiveMemoryWarning및 - (void)dealloc메서드를 사용해야합니다 .
iOS 6에서 UIViewController의 viewWillUnload 및 viewDidUnload 메서드는 이제 더 이상 사용되지 않습니다. 이러한 메서드를 사용하여 데이터를 해제하는 경우에는 didReceiveMemoryWarning 메서드를 대신 사용하십시오. 이 메서드를 사용하지 않는 경우 뷰 컨트롤러의 뷰에 대한 참조를 해제 할 수도 있습니다. 이 작업을 수행하기 전에보기가 창에 없는지 테스트해야합니다.
따라서 먼저 뷰가 창에 있는지 확인한 다음 관찰자를 제거해야합니다. didReceiveMemoryWarning
우선, 더 viewDidUnload이상 사용되지 않는 경우에도 viewDidUnloadAND 에서 해당 알림을 등록 취소해야했습니다 dealloc. iOS 6 이전에도 viewDidUnload대부분의 경우 호출되지 않습니다. 메모리 부족 상황에서만. 그래서 당신은 단지에 넣어 한 경우 viewDidUnload와하지 dealloc가 등록하지 않았을 것이다, 이전과는 할당 해제 통지를받은 때 아마 추락했을 것이다. 따라서 dealloc제대로 작동하려면 이전 에 넣어야했습니다 .
둘째, 이전에 올바르게 수행했다면 iOS 6에서 올바르게 작동하기 위해 추가 작업을 수행 할 필요가 없습니다. iOS 6의 유일한 차이점은 뷰가 더 이상 언로드되지 않는다는 것입니다 (메모리가 부족한 상황에서도). 따라서 메모리 부족 상황이 발생하지 않았을 때 iOS 5에서와 동일합니다. 뷰가 언로드되지 않으므로 viewDidLoad한 번만 호출되므로 알림은 한 번만 등록됩니다. dealloc올바르게 작동하려면 입력해야 하므로에서 등록이 취소 됩니다.
Alex 대답은 좋습니다. 그러나 나는 적절한 페어링을 좋아합니다. 따라서 뷰가 보이지 않을 때 알림을받을 필요가없는 한 보통 viewWillAppear 및 viewDidDisappear에 알림을 추가합니다.
DEALLOC 함수에서 관찰자를 제거하지 않는 이유는 무엇입니까? ARC를 사용하는 경우 [super dealloc]을 호출하지 마세요.
컨트롤러 dealloc 함수가 호출되지 않는 것을 본다면 이것이 왜 그런지 알아 내야합니다. 아마도 ViewController에서 NSTimer가 실행 중이고 뷰를 열 때 dealloc이 호출되지 않을 것입니다. 또는 다른 곳에서보기가 유지됩니다.
참고 URL : https://stackoverflow.com/questions/12603336/ios6-viewdidunload-deprecated
'Program Club' 카테고리의 다른 글
| Rails 3에서 초기화 프로그램의로드 순서를 어떻게 변경하나요? (0) | 2020.12.03 |
|---|---|
| 왜 "할당되지 않은 로컬 변수 사용"오류를 컴파일합니까? (0) | 2020.12.03 |
| git commit 중지됨-트리 빌드 오류 (0) | 2020.12.03 |
| 파이썬에서 암호 학적으로 안전한 난수를 어떻게 만들 수 있습니까? (0) | 2020.12.03 |
| NSURLSession : URL 요청에 대한 시간 초과를 늘리는 방법은 무엇입니까? (0) | 2020.12.03 |