3 votes

SpriteKit - pourquoi mon jeu développe-t-il des bugs lorsque de nouvelles versions d'iOS sont publiées?

Comment fonctionne réellement SpriteKit? Le code du framework est-il compilé dans l'application ou fait-il partie d'iOS lui-même? Je remarque qu'à chaque mise à jour majeure d'iOS, je me retrouve à devoir réécrire une tonne de code et à corriger des bugs dans mon jeu SpriteKit. Pourquoi cela?

2voto

Steve Ives Points 181

L'environnement d'exécution de SpriteKit se trouve sur le téléphone, et n'est pas une partie de votre application. Cela permet d'économiser de l'espace (sinon, chaque application contiendrait une copie de toutes les bibliothèques d'exécution qu'elles utilisent, entraînant une importante duplication) mais peut entraîner le genre de problèmes que vous rencontrez, où les mises à jour de l'exécution peuvent 'casser' des applications qui fonctionnaient auparavant.

Cela se produit lorsque vous appelez une fonction iOS (dans SpriteKit, UIKit etc.) votre code se branche vers un code stocké dans le téléphone lui-même. Si ce code change (avec une mise à jour iOS) et s'attend soudainement à un CGVector au lieu d'un CGPoint, ou un 3ème paramètre lors d'un appel de fonction, le programme échouera.

Certains compilateurs ont la capacité de 'lier' les bibliothèques d'exécution avec l'exécutable, rendant l'application plus résiliente aux mises à jour du système d'exploitation, mais cela peut avoir des effets secondaires, comme des programmes fonctionnant avec une exécution datant de plusieurs années (voire décennies pour certains codes avec lesquels j'ai travaillé) qui ne fonctionnent tout simplement plus (l'an 2000 a fourni des exemples de cela, avec d'anciennes versions de l'environnement d'exécution COBOL d'IBM sur les mainframes qui n'étaient pas conformes à l'an 2000) et mettre l'application à jour est un travail massif, comparé à devoir se mettre à jour pour une seule version incrémentielle de l'exécution.

1voto

MoDJ Points 1343

Cela fait partie d'iOS. Vous pouvez utiliser le mode OpenGL précédent dans iOS 9.X en définissant le drapeau PrefersOpenGL=YES dans Info.plist, pour plus d'informations consultez https://stackoverflow.com/a/37768928/763355

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X