在AppleTV硬件上安装的TestFlight应用程序和直接USB运行应用程序之间的tvOS差异



我正在努力将TopShelf实现添加到我的tvOS应用程序中。我还在努力创建一个集合视图实现,该实现在应用程序中具有类似的功能。两者在Mac上的模拟器中都能很好地工作,但在使用TestFlight部署到Apple TV时不起作用。我试着使用USB-C电缆来捕捉一些日志,或者查看UIActivityIndicator刚旋转时发生了什么。我认为这可能与试图下载太多图像或其他网络问题有关。我开始缓存图像,这在模拟器中运行良好,但在设备上不起作用。

当我插入设备并运行应用程序时,即使下载次数更高,它也能正常工作。后来我通过TestFlight更新了版本,并回到了原来的位置。现在,我的应用程序每次都能与我自己的视图控制器和TopShelf部分配合使用,但如果通过TestFlight部署,则根本无法工作。我无法获取任何日志来了解发生了什么,因为当我连接USB电缆并运行应用程序时,它就会开始工作。

有人见过类似的行为吗?或者知道解决问题的方法吗?

我能够确定发生了几件事。第一件事是模拟器是为调试的构建配置而设置的。我进入"编辑方案",将Run的构建配置更改为"发布"。这使我能够在模拟器上重新创建我在设备上看到的内容。它还使调试变得更加容易,因为我可以轻松地添加日志来跟踪代码挂起的位置。

问题的根源是,在等待网络块更新标志时,我有一个while循环什么都不做。我曾在其他情况下使用过这种破解方法,从未遇到过问题。如果我在while循环中添加一个NSLog命令,它会很好地通过,但循环中没有任何内容,即使网络调度已经完成下载数据,它也会挂起。

为了解决这个问题,我阅读了使用dispatch_semaphore_wait(sema,dispatch_TIME_FOREVER)这解决了我的问题(我想这也让我的代码更加可靠)。

相关内容

最新更新