web-dev-qa-db-fra.com

Comment corriger l'avertissement "CoreUI: RunTimeThemeRefForBundleIdentifierAndName () n'a pas pu trouver Assets.car dans le bundle avec l'identifiant: '(null)'"?

J'essaie de tester l'application sur la version bêta d'iOS 13. Lorsque je tape sur un bouton de mon écran de bienvenue pour accéder à un autre écran, l'application se bloque, puis s'arrête. Lorsque je débogue dans Xcode 11, je vois les lignes d'avertissement suivantes dans la console:

[framework] CoreUI: RunTimeThemeRefForBundleIdentifierAndName () n'a pas pu trouver Assets.car dans le bundle avec l'identifiant: '(null)'

[framework] CoreUI: RunTimeThemeRefForBundleIdentifierAndName () n'a pas pu trouver Assets.car dans le bundle avec l'identifiant: '(null)'

puis après plusieurs secondes, l'application se termine avec une entrée de journal:

Message du débogueur: arrêté en raison d'un problème de mémoire

Sur iOS 12, ce problème n'existe pas. J'ai créé une application de test simple avec plusieurs fichiers d'actifs et l'enchaînement sur le bouton a bien fonctionné. J'ai également changé la version cible pour iOS 13, changé l'identifiant du bundle, nettoyé et reconstruit, mais le problème persiste.

8
Gomer Grek

J'ai découvert que le problème n'était pas lié à

CoreUI: RunTimeThemeRefForBundleIdentifierAndName () n'a pas pu trouver Assets.car dans le bundle avec l'identifiant: '(null)'

Sur l'écran cible a été utilisé UILabel personnalisé. La cause première du gel des applications et du problème de mémoire était une boucle réentrante entre ses méthodes

override var text: String? {
    didSet {
        guard let text = text else { return }
        let textRange = NSMakeRange(0, text.count)
        // Kern attribute needed to do letter spacing over text
        let attributedText = NSMutableAttributedString(string: text)
        attributedText.addAttribute(NSAttributedStringKey.kern , value: 2.0, range: textRange)
        // Add other attributes if needed
        self.attributedText = attributedText
    }
}

et

override public func layoutSubviews() {
    super.layoutSubviews()
    if let text = self.text {
        self.text = text.uppercased()
    }
}

probablement la nouvelle version du SDK invoque layoutSubviews () lorsque le champ attributedText a changé

4
Gomer Grek