J'ai donc converti mon projet pour utiliser Swift 4 dans Xcode 9, et j'ai commencé à tester mon application. C'est une grosse application avec quatre onglets distincts, et presque tout fonctionne comme prévu. L'un des onglets est une carte, en utilisant GoogleMaps. Je n'ai jamais eu aucun problème avec cela, mais lorsqu'il est construit avec Xcode 9 et montré dans le simulateur, il utilise sur 100% du processeur lors du déplacement de la carte, et il est très lent. Voici le navigateur de débogage lors de l'exécution sur un simulateur. Nous effectuons un dessin personnalisé, mais pas un dessin de 102%.GoogleMaps sur simulateur dans Xcode 9 utilise plus de 100% du CPU lors du déplacement de la carte
Cela ne commencé à se produire après avoir mis à jour à 9 Xcode et Swift 4. Lors du débogage dans Xcode 9 sur un iPhone 7, 8 ou X simulateur, tous avec iOS 11, il va un peu plus 100% CPU, et il arrête complètement l'interface utilisateur de mise à jour pendant environ une seconde chaque fois que je tente de le déplacer. Je commence le drag-gesture, mais l'interface utilisateur ne se met à jour qu'une fois par seconde. En me donnant environ 1fps.
Cependant, lors du débogage dans Xcode 9 sur un iPhone 6 simulateur avec iOS 9, il obtient jusqu'à ~ 90% lors du déplacement de la carte et non à la traîne presque autant. Je devine que je reçois environ 20-30 fps ici. (Cela peut être le même que si je recevais des simulateurs sur Xcode 8. La carte n'a jamais été vraiment fluide sur le simulateur ..)
Lors de l'exécution sur un appareil réel (iPhone 7, iOS 11), le processeur utilise environ 40% lorsque vous bougez constamment la carte, et fonctionne très lisse sans aucun retard (60fps).
Je reçois aussi cela dans la sortie dès que j'ouvre l'onglet avec la carte, mais je pense qu'il est hors de propos à cette question particulière:
Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]
PID: *****, TID: *******, Thread name: com.google.Maps.LabelingBehavior, Queue name: com.apple.root.default-qos.overcommit, QoS: 21
Cela dit que les appels GoogleMapsAPI [UIApplication applicationState]
sur un fil d'arrière-plan. J'utilise la dernière version de GoogleMaps: 2.4.0. Pour autant que je sache, cette version peut ne pas supporter Xcode 9/Swift 4 etc, mais je ne trouve rien sur une nouvelle version.
Je pense que vous devriez poser cette question sur les formes de développement Google aussi . Parce qu'ils pourraient nous donner une réponse de battue à nous. –
@AbuUlHassan J'y ai pensé, mais ils indiquent sur leur page de support pour GoogleMapsAPI que StackOverflow et ces tags personnalisés (google-maps) sont surveillés par plusieurs membres de l'équipe GoogleMapsAPI, et nous encouragent à l'utiliser (https: // developers.google.com/maps/documentation/ios-sdk/support) Je n'aime vraiment pas leur problème de suivi de toute façon .. – Sti
@Sti Avez-vous testé dans le vrai appareil? – Aznix