SpriteKit是如何运作的?该框架的代码是编译到应用程序中,还是作为iOS本身的一部分?我注意到每次iOS有重大更新时,我都需要重新编写一些代码并修复我的SpriteKit游戏中的错误。为什么会这样呢?
SpriteKit是如何运作的?该框架的代码是编译到应用程序中,还是作为iOS本身的一部分?我注意到每次iOS有重大更新时,我都需要重新编写一些代码并修复我的SpriteKit游戏中的错误。为什么会这样呢?
SpriteKit运行时环境在手机上,而不是应用程序的一部分。这可以节省空间(否则每个应用程序都将包含所使用的所有运行时库的副本,导致大量重复),但可能会导致您遇到的问题,即更新运行时可能会“破坏”之前正常工作的应用程序。
这是因为当您调用iOS函数(在SpriteKit、UIKit等中)时,您的代码跳转到存储在手机本身中的某些代码。如果此代码发生更改(随着iOS更新),突然期望CGVector而不是CGPoint,或者在函数调用中有第三个参数,则程序将失败。
一些编译器具有将运行时库与可执行文件绑定的能力,使应用程序更具弹性以适应操作系统升级,但这可能会产生连锁反应,例如程序运行的运行时可能已经过时,甚至对于我处理过的某些代码来说已经几十年了,根本无法工作(Y2K就提供了这方面的例子,旧版本的IBM COBOL运行时环境在大型计算机上不符合Y2K标准),将应用程序更新到最新版本是一项巨大的工作,相对于只需更新一个增量发布的运行时版本。
这是iOS的一部分。您可以通过在Info.plist中设置PrefersOpenGL=YES标志来在iOS 9.X中使用以前的OpenGL模式,有关更多信息,请参见https://dev59.com/EnjZa4cB1Zd3GeqPbDSx#37768928。