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