ich mein Projekt Swift Upgrade 3.0, aber nach dem Update der App wird auf dem Simulator nicht ausgeführt werden. Es stürzt nicht ab, sondern friert einfach ein.
Ich untersuchte das Problem und sah, dass die Apps bei der Initialisierung der benutzerdefinierten Schriftarten hängen blieben.
Ich kopierte die Funktion unten.
func registerMaterialFont() {
let url = Bundle.main.url(forResource: "Material-Design-Iconic-Font", withExtension: "otf")!
let data = try! Data(contentsOf: url)
let provider = CGDataProvider(data: data as CFData)
print("Test 1")
let font = CGFont(provider!)
print("Test 2")
var error: Unmanaged<CFError>?
if !CTFontManagerRegisterGraphicsFont(font, &error) {
//Error handling here
} else {
log.info("Material Font registered");
}
}
Die Konsole wird Test 1 nur drucken.
Hat jemand eine Idee, was los ist?
Hinweis :. Diese App läuft auf einem TestPhone mit SIM-Karte und läuft nicht auf einem Handy ohne SIM-Karte!
Edit: Stapelüberwachung Wenn ich pauze in der Debug-Konsole drücken, wird die folgende Stack-Trace angezeigt:
libsystem_kernel.dylib`semaphore_wait_trap:
0x10c765fa4 <+0>: movq %rcx, %r10
0x10c765fa7 <+3>: movl $0x1000024, %eax ; imm = 0x1000024
0x10c765fac <+8>: syscall
-> 0x10c765fae <+10>: retq
0x10c765faf <+11>: nop
Führen Sie die App über den Debugger aus. Wenn es nicht funktioniert, klicken Sie im Debugger auf die Schaltfläche "Pause" und sehen Sie sich den resultierenden Stack-Trace an, um festzustellen, wo er hängen geblieben ist. – rmaddy
@rmaddy Ich habe den Stack-Trace auf den Kommentar aktualisiert. – Bas
Sieht wie ein böser Fehler in 'CGFontCreate' aus. Es verwendet 'dispatch_once', das wiederum' CGFontCreate' aufruft. Der 2. Anruf ist jetzt blockiert und wartet auf den vorherigen Anruf, um zu beenden. – rmaddy