답변

0

거부 ​​할 이유가 없습니다. 메소드를 비추천으로써, -[UIView viewDidUnload]은 다른 어떤 메소드처럼 간단하게됩니다. 처음에는 UIView에 존재하지 않는 것처럼 취급 할 수 있으며 방금 -viewDidUnload이라는 메서드를 만들었습니다.

-viewDidUnload 여전히 (이 그것을 수도) 내부에 존재하고 당신이 당신의 자신의 대신 애플의 (지금 개인) 구현을 호출을 시도했지만 애플이 이런 짓을 했을까 내가보기 엔 의심 경우가 문제가 될 것입니다.

if ([[self superclass] instancesRespondToSelector:@selector(viewDidUnload)]) { 
    [super viewDidUnload]; 
} 

당신이 정말로 당신이 할 수 안전하고 싶었다면 : 슈퍼 클래스가 현재 사용, 무슨 일을하는지의 경우 슈퍼에 전화하기 전에 방법을 구현하는 경우 그냥 물어 기억하는 당신의 -viewDidUnload에 기억 항상 다른 방법으로 코드를 이동하십시오. viewDidUnload 내부 단지에서 iOS 5 장치에 대한 새 메서드를 호출하고 당신이 아이폰 OS 6에 있다면 -didReceiveMemoryWarning에 새 메소드를 호출이 아니었다 이후이 didReceiveMemoryWarning의 논리에 길이 언급을하지 않을거야

질문에서 컨트롤러를 넣는 상태에 대해 매우 신중해야한다고 말할 것입니다. if 문이 모든 기반을 커버하는지 확인하십시오. 물론 뷰 컨트롤러와 뷰를 기대할 수는 없습니다. viewDidUnload가 iOS 5의 UIKit에 의해 호출되었을 때와 같은 상태에 있어야합니다.

1

이유는 없지만 Apple은이를 거부합니다.

수동으로 호출하는 것은 문제를 묻는 것입니다. 응용 프로그램 논리를 올바르게 가져와 "올바른"방식으로 수행하는 것이 좋습니다.

편집 : 해당 코드를 다시 살펴본 후 심각한 문제가 발생합니다. 호출 선택자 (우리는 이미 주 스레드에 있어야합니다!)와 수퍼 뷰 (그것을 말하지 않고 소유자의 뷰를 훔치는)에서 제거하는 것은 모든 것이 정확하지 않을 수 있습니다. 이것은 코드 기반에서 정말로 제거하고자하는 코드 유형입니다.