Ios &引用;由于执行过程中出现错误,命令缓冲区的执行被中止;在Apple Watch应用程序上?

Ios &引用;由于执行过程中出现错误,命令缓冲区的执行被中止;在Apple Watch应用程序上?,ios,watchkit,apple-watch,healthkit,Ios,Watchkit,Apple Watch,Healthkit,2020-01-18 18:03:02.316685-0500监视扩展[529:813076]由于执行过程中出现错误,命令缓冲区的执行被中止。权限不足(从后台提交GPU工作)(IOAF代码6) 在测试3款HealthKit应用程序时,我开始反复打印这个控制台消息,但我不知道它与什么相关,所以之前的问题都是关于iPhone的。具体来说,当我模拟锻炼运动(如慢跑)时,我似乎可以触发它。你知道是什么导致了手表上的这条信息吗 编辑:我相信问题出在我用来在watch应用程序上显示动画的SKScene。当我

2020-01-18 18:03:02.316685-0500监视扩展[529:813076]由于执行过程中出现错误,命令缓冲区的执行被中止。权限不足(从后台提交GPU工作)(IOAF代码6)

在测试3款HealthKit应用程序时,我开始反复打印这个控制台消息,但我不知道它与什么相关,所以之前的问题都是关于iPhone的。具体来说,当我模拟锻炼运动(如慢跑)时,我似乎可以触发它。你知道是什么导致了手表上的这条信息吗

编辑:我相信问题出在我用来在watch应用程序上显示动画的
SKScene
。当我评论下面的内容时,我不再看到控制台警告:

 @IBOutlet var spriteKitScene1: WKInterfaceSKScene!
    @IBOutlet var spriteKitScene2: WKInterfaceSKScene!

HealthKit必须使用金属,否则应用程序中的某些东西会损坏。金属不允许背景处理

为了消除警告,您需要暂停或挂起任何使用金属的过程

在AppDelegate.swift文件中,可以实现以下两种方法:

func applicationWillResignActive(_ application: UIApplication) {
    //Pause or suspend any operations using Metal
}

func applicationDidBecomeActive(_ application: UIApplication) {
    //Resume or start operations using Metal
}
进入后台/前台时启动/停止操作的另一种方法是使用通知。如果你喜欢这种模式,我会举一些例子


请注意,您看到的是一条警告,指示金属加工不会在后台进行。如果你的应用程序按预期运行,你可以忽略警告。

你的应用程序是否使用金属?@JeshuaLacock否。只是一个在HealthKit运行训练的手表应用程序。我正在使用Swift。奇怪的是,这些应用已经在生产中,并且已经使用了很多年,然后突然我在Xcode 11.3中看到了这些控制台消息。具体来说,它发生在委托中,我真的可以暂停或暂停任何HealthKIT操作,因为用户在锻炼的中间。它似乎是在我模拟锻炼活动时触发的,例如,移动手臂。在HealthKit的不同API(即旧的HKWorkoutSession API和查询样本以及新的WorkoutBuilder API)中也会发生这种情况。如果这不会对应用程序的运行产生负面影响,您可以忽略该消息,这只意味着在应用程序后台运行时,正在使用Metal的任何东西都将被挂起。除了HealthKit,你还使用了其他可能使用金属的东西吗?不,我没有注意到应用程序中有任何性能变化,只是在控制台中,它每秒都会打印,所以有点令人担忧。不只是使用WatchKit和HealthKit。因为我在我的watch应用程序中使用SpriteKitsene制作动画,所以我能够实现一个协议,在应用程序处于非活动或活动状态时通知InterfaceController,并使用SpriteKitsene上的.isPaused“属性暂停它。@GarySabo谢谢,你的评论为我节省了很多时间!