Je tente de trier un issue où un cadre d'analyse de flux (FeedKit) se bloque s'il y a pas de connectivité pour obtenir le contenu de l'URL spécifiée (par exemple, l'application est hors ligne). Donc, cela fonctionne quand l'application est en ligne, et en ligne seulement.Sous-classe de XMLParser se bloque avec l'initialiseur contentsOfURL s'il n'y a pas de connectivité, Internet ou autre, pour obtenir le contenu de l'URL
Chaque fois que j'essaie de instancier ma Parser
classe avec le initialiseur de commodité de la superclasse XMLParser
convenience init?(contentsOf url: URL)
Les accidents cadres:
Afin d'essayer d'isoler le problème et exclure une erreur introduite dans le cadre, j'ai recréé le problème dans un projet propre:
Une solution qui fonctionne comme un charme, en utilisant un XMLParser vanilles du cadre Fondation:
let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!
if let parser = XMLParser(contentsOf: feedURL) { // Works as expected
print("Got instance \(parser)")
}
Et un autre qui ne fait pas:
class Parser: XMLParser { }
let feedURL = URL(string: "http://images.apple.com/main/rss/hotnews/hotnews.rss")!
if let parser = Parser(contentsOf: feedURL) { // Crash!
print("Got instance \(parser)")
}
Dans le second exemple, tout ce que je suis doing sous-classe la classe XMLParser
. Aucun remplacement ou code personnalisé que ce soit. Et il se bloque toujours.
Ai-je raté quelque chose?
Merci
Edit:
a présenté un rapport de bug à Apple avec le numéro 28904764 et ouvert une Radar à cette question. Je suis confiant que c'est un bug sur la fin d'Apple, mais préférerait se tromper et avoir un correctif.
Déjà suggéré cette solution comme une solution temporaire dans le numéro d'origine https://github.com/nmdias/FeedKit/issues/4.Je ne souhaite pas fournir une implémentation personnalisée de l'initialiseur dans le framework, car cela va à l'encontre du but de l'init du super. Entre-temps, Apple a reçu une réponse demandant les journaux de plantage. Mettra à jour lorsque obtenir plus de commentaires. – nmdias
@nmdias de toute façon qu'essayais-tu de savoir en postant une question? Une solution alternative? –
Une solution à un problème. Je suppose qu'une solution de contournement est aussi bonne que ça va l'être. Je vais accepter votre réponse. – nmdias