AVKits VideoPlayer (SwiftUI) crasht auf diesem macOS-Stand beim Anzeigen mit einem Swift-Runtime-Fehler: "failed to demangle superclass of VideoPlayerView from mangled name 'So12AVPlayerViewC'". Das ist ein Metadata-Bug in Apples eigener _AVKit_SwiftUI-Bridge, kein Fehler in unserem Code — bestätigt über den Crash-Report (SIGABRT, swift::fatalError beim Instanziieren der generischen Metadata für VideoPlayerView). Fix: PlayerView bindet AppKits AVPlayerView direkt per NSViewRepresentable ein statt über AVKits SwiftUI-Wrapper zu gehen — umgeht den kaputten Codepfad komplett.main
parent
b4b17bc1d9
commit
0ddd66edc4
@ -0,0 +1,28 @@
|
|||||||
|
import AppKit
|
||||||
|
import AVKit
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
/// Dünne Hülle um AppKits `AVPlayerView` statt AVKits SwiftUI-`VideoPlayer`.
|
||||||
|
///
|
||||||
|
/// `VideoPlayer` crasht auf manchen macOS-Ständen beim Öffnen mit einem
|
||||||
|
/// Swift-Runtime-Fehler ("failed to demangle superclass of VideoPlayerView
|
||||||
|
/// from mangled name 'So12AVPlayerViewC'") — ein Metadata-Bug in Apples
|
||||||
|
/// eigener `_AVKit_SwiftUI`-Bridge, kein Fehler in diesem Code. `AVPlayerView`
|
||||||
|
/// direkt per `NSViewRepresentable` einzubinden umgeht den kaputten Codepfad.
|
||||||
|
struct PlayerView: NSViewRepresentable {
|
||||||
|
let player: AVPlayer
|
||||||
|
|
||||||
|
func makeNSView(context: Context) -> AVPlayerView {
|
||||||
|
let view = AVPlayerView()
|
||||||
|
view.player = player
|
||||||
|
view.controlsStyle = .inline
|
||||||
|
view.showsFullScreenToggleButton = false
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateNSView(_ nsView: AVPlayerView, context: Context) {
|
||||||
|
if nsView.player !== player {
|
||||||
|
nsView.player = player
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue