- PlayerNSView: AVPlayerLayer as sublayer (not layer= replacement) NSView internally manages a sublayer array; replacing the backing layer directly causes dangling refs during autorelease pool drain - cleanup(): only pause + remove observers, no replaceCurrentItem CoreMedia internal state gets corrupted when item is replaced during view teardown; let it release naturally with deinit