앱 수명주기에 내가 필요로하는 옵서버가 있는데, 제거해야합니까? 앱이 닫힌 후에 GC
이 앱을 삭제할 것이라고 생각합니다. 맞습니까? 예인 경우 언제 제거해야합니까? deinit
에?관찰자를 강제로 제거 하시겠습니까?
3
A
답변
5
iOS 8 이전 버전을 지원하는 경우. 당신은 dealloc
또는 viewWillDisappear
내부의 관찰자를 제거해야합니다. 더 자세한 답변은 here입니다.
iOS 9 이상에서 지원을 제공하는 경우 더 이상 수동으로 관찰자를 제거 할 필요가 없습니다. 사과 문서에서 :
OS X 10.11 및 iOS 9.0 NSNotificationCenter 및 NSDistributedNotificationCenter는 더 이상 할당 해제 할 수있다 등록 관찰자에게 알림을 보낼 수 없습니다. 옵저버가 을 제로 - 약한 참조로 저장할 수 있으면 개체를 약하게 저장할 수없는 경우 (즉, 사용자 지정 유지/릴리스 메커니즘이 있음) 옵저버를 0으로 설정하는 약한 참조로 저장합니다. 런타임에서 객체를 약하게 저장할 수 없게 됨) 객체를 비 weak 제로 참조로 저장합니다. 이는 관찰자가 할당 해제 방법에서 의 등록을 해제하지 않아도된다는 것을 의미합니다.
더 자세한 설명은 here입니다.
참고 : 위의 링크 된 문서에서 언급 한 블록 기반 알림을 사용할 때는주의해야합니다.
[this] (http://stackoverflow.com/a/15941336/4539192)를보십시오. 이것은 iOS 8 지원을 제공하는 경우 제공되며, iOS 9 이상은 더 이상 필요하지 않습니다. 자세한 내용은 [여기] (https://developer.apple.com/library/content/releasenotes/Foundation/RN-Foundation/index)를 참조하십시오. .html # 10_11NotificationCenter). – Rikh
좋아요, 답장으로 보내주세요. 동의하겠습니다. – AVEbrahimi