Müssen wir removeObserver:
explizit für Objekte senden, die zuvor als Beobachter einer NSNotificationCenter
hinzugefügt wurden?In ARC müssen wir removeObserver senden: explizit?
Ich bin etwas verwirrt und nicht in der Lage, die genaue Antwort dafür zu finden.
Bitte geben Sie mir im Detail, dazu einschließlich warum wir removeObserver explizit, und warum Compiler nicht implizit in Klasse/Anwendung setzen?
Dann warum ARC Vorkehrungen dafür trifft? Wie es setzt [...]; warum es nicht [... removeObserver: ...] setzt?/ –
Natürlich weiß NSNotificationCenter, wer beobachtet: Es muss schließlich die Benachrichtigungen weiterleiten. Es scheint, als hätten sie schwache Referenzen auf Null setzen können, um sicherzustellen, dass Benachrichtigungen nicht an freigelassene Beobachter gesendet werden. Aber ich habe eine kurze Demo gemacht, nur um es zu überprüfen, und es stürzt ab, wenn Sie removeObserver nicht aufrufen: in dealloc. Dang. – davehayden
Es muss nicht notwendig sein, da es einen schwachen Verweis auf den Beobachter geben kann, aber wenn Apple nicht explizit dokumentiert, dass es nicht notwendig ist, ist es notwendig. Vielleicht müssen wir eine Feature-Anfrage machen. –