SpriteKit - 为什么我的游戏在新的iOS版本发布后会出现错误?

3

SpriteKit是如何运作的?该框架的代码是编译到应用程序中,还是作为iOS本身的一部分?我注意到每次iOS有重大更新时,我都需要重新编写一些代码并修复我的SpriteKit游戏中的错误。为什么会这样呢?

2个回答

2

SpriteKit运行时环境在手机上,而不是应用程序的一部分。这可以节省空间(否则每个应用程序都将包含所使用的所有运行时库的副本,导致大量重复),但可能会导致您遇到的问题,即更新运行时可能会“破坏”之前正常工作的应用程序。

这是因为当您调用iOS函数(在SpriteKit、UIKit等中)时,您的代码跳转到存储在手机本身中的某些代码。如果此代码发生更改(随着iOS更新),突然期望CGVector而不是CGPoint,或者在函数调用中有第三个参数,则程序将失败。

一些编译器具有将运行时库与可执行文件绑定的能力,使应用程序更具弹性以适应操作系统升级,但这可能会产生连锁反应,例如程序运行的运行时可能已经过时,甚至对于我处理过的某些代码来说已经几十年了,根本无法工作(Y2K就提供了这方面的例子,旧版本的IBM COBOL运行时环境在大型计算机上不符合Y2K标准),将应用程序更新到最新版本是一项巨大的工作,相对于只需更新一个增量发布的运行时版本。


这是一种笨拙的描述静态库和动态库之间差异的方式,而执行这些操作的是链接器而不是编译器。 - Droppy
我并不想详细解释编译器和绑定器之间的区别,因为大多数人只是认为他们的程序被“编译”了。我也没有谈论动态和静态子程序之间的区别,而是介绍驻留和非驻留运行时库之间的区别。 - Steve Ives

1

谢谢你的回答。唯一的问题是渲染器吗?似乎SpriteKit对象的功能在不同版本之间也会发生变化。 - hamobi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接