経緯
AVPlayer
のrate
をKVOで監視する実装を行い、NSKeyValueObservation
はメンバ変数に持たせました。
解放は、NSKeyValueObservation#invalidate
に下記のコメントがあったため、メンバ変数を持っているクラスの解放に任せることにしました。
invalidate() will be called automatically when an NSKeyValueObservation is deinited
ところが、リリースしてみると、スタックトレースに下記を含むようなクラッシュが多発しました。
開発時やテストフライトでの動作確認も行っておりましたが、再現はできませんでした。
KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED
解決
Appleのいうことは信じずに、メンバ変数を持っているクラスのdeinit
でNSKeyValueObservation#invalidate
を明示的に行うように変更したところ、発生しなくなりました。