2014-07-10 2 views
0

NSNotificationCenterknown이며 관찰자를 보유/석방하지 않습니다. 그것은 의미가 있으며, 또한 관련 문제를 경험했습니다.NSNotificationCenter 방법의 옵저버 보유/릴리스에 대한 공식적인 언급은 어디에 있습니까?

어쨌든 오늘 나는 이것이 정말로 확실하지 않다는 것을 깨달았습니다. The official documentation은 ref-counting stuff에 대해 아무 말도하지 않습니다.

토론 섹션에서는 해제하기 전에 관찰자의 등록을 취소해야한다고 말하고 있지만 센터가이를 보유하지 않는다는 것을 의미하지는 않습니다. 할당 취소 타이밍은 센터의 동작에 따라 달라질 수 있습니다.

그런 다음 설명서에서 아무 것도 찾을 수 없습니다.

실제로 우리는 추가/제거 관찰자 방법이 경험에 의해 관찰자를 유지하지 않는다는 것을 이미 알고 있습니다. 유지되지 않은 참조는 심각한 버그를 유발할 수있는 매우 예외적 인 동작이며, 이에 대한 명시적인 언급이 있어야한다고 생각합니다.

어디입니까?

답변

0

아니요, 옵서버는 유지되지 않습니다. 그래서 개체를 관찰자로 만들 때 dealloc 메서드에서 관찰을 중단해야합니다. 논리적으로, 관찰 된 객체는 관찰자에 대해 에 대해 아무것도 알고 있지 않아야하며, 관찰자를 신경 쓰지 않아야하며 따라서 관찰자를 강력하게 참조해서는 안됩니다.

관련 문제