我正在iMessage扩展中使用SceneKit,遇到了一个奇怪的小问题。我正在尝试使用混合形状锚点将自定义scn模型和装备节点呈现给用户面部表情。我能够在此iMessage扩展源于iOS的iOS应用中成功完成此任务。但是,一旦放置到MessageViewController中,则每次我尝试运行它时,程序都会以代码0退出。
我做了一些挖掘工作,似乎“退出代码0”表示内存过载,因此我开始研究模型节点。我发现,如果删除除一个以外的所有节点,则可以为其节点设置相应的混合形状来为其设置动画。任何一个以上的节点都将崩溃。
有人对发生这种情况有任何想法吗?还是任何证明iMessage扩展仅在被杀死之前才被赋予一定数量的处理能力的证据(这是我的另一种理论)?
感谢任何帮助!
答案 0 :(得分:2)
从App Extension Programming Guide中我们了解到
正在运行的应用程序扩展的内存限制明显低于对前台应用程序施加的内存限制。在这两个平台上,系统都可能会主动终止扩展,因为用户希望返回主机应用程序中的主要目标。某些扩展的内存限制可能比其他扩展低:例如,小部件必须特别有效,因为用户可能同时打开几个小部件。
您的应用扩展程序没有主运行循环,因此至关重要的是,您必须遵循已建立的规则在主运行循环中表现良好。例如,如果您的扩展程序阻塞了主运行循环,则可能会在另一个扩展程序或应用程序中造成不良的用户体验。
请记住,GPU是系统中的共享资源。应用程式扩充功能并不是共享资源的最高优先级;例如,运行图形密集型游戏的Today小部件可能会给用户带来糟糕的体验。由于内存压力,系统可能会终止此类扩展。大量使用系统资源的功能适用于应用程序,而不适用于应用程序扩展。
答案 1 :(得分:0)
一种选择是尝试在DCC中优化几何,以免遇到系统资源限制。