NSNotificationCenter
에서 옵저버를 추가 및 제거하는 가장 좋은 방법은 무엇입니까? viewDidLoad
에서 관찰자로 self
을 추가하고 viewDidUnload
에 self
을 제거하면 내가 궁금하네요NSNotificationCenter에서 관찰자를 추가/제거하는 모범 사례
충분하다. 또는 self
을 dealloc
에서 삭제해야합니다.
아마도 낮은 메모리 조건을 고려해야합니다. viewDidLoad
을 추가하고 dealloc
을 제거하는 것이 문제가 될 수 있음 : viewDidUnload
이 메모리 부족으로 인해 호출 됨 ... viewDidLoad
이 뷰가 다시 표시되면 호출 됨 ... 이제 self
이 제거되지 않고 두 번 관찰자로 추가되었습니다. (dealloc
이 (가) 호출되지 않았기 때문에).
참고 : 여기서는 self
이 UIViewController
하위 클래스를 나타냅니다.
흥미 롭습니다. 그래서 iOS 5+에서 메모리 부족 상태에서 viewDidUnload 대신 호출되는 것은 무엇입니까? – SundayMonday
메모리 부족 상태 인 경우'didReceiveMemoryWarning'이 계속 호출됩니다. 또한 Apple의 [UIViewController] (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html) (특히 "Memory Management"섹션 참조)를 확인하십시오. 메모리 부족 경고가 발생하면 UIViewController 클래스는 나중에 다시로드하거나 다시 만들 수 있음을 알고 있으면 뷰를 제거합니다. 이 경우 viewDidUnload 메소드를 호출하여 뷰 계층과 관련된 모든 객체의 소유권을 양도 할 기회를 코드에 부여 할 수도 있습니다. –