tvOS与AppleTV硬件上的TestFlight安装应用程序和直接USB运行应用程序之间的区别

时间:2015-12-07 18:07:05

标签: ios testflight tvos apple-tv topshelf

我正在为我的tvOS应用添加TopShelf实现。我还在创建一个Collection View实现,它具有与app相似的功能。两者都可以在Mac上的模拟器中正常工作,但在使用TestFlight部署到Apple TV时无法正常工作。我尝试使用USB-C电缆尝试捕获一些日志,或者看看当UIActivityIndi​​cator旋转时发生了什么。我认为这可能与尝试下载太多图像或其他网络问题有关。我开始缓存图像并再次在模拟器中很好地工作,但在设备上却没有。

当我插入设备并运行应用程序时,它可以正常工作,即使下载次数较多。我后来通过TestFlight更新了版本,并回到了同一位置。现在我处于一个应用程序每次使用我自己的视图控制器和TopShelf部件工作的位置,但如果通过TestFlight部署,则根本不起作用。我无法获取任何日志来弄清楚发生了什么,因为当我连接USB线并运行应用程序时,它开始工作。

有没有人看到类似的行为或知道如何解决正在发生的事情?

1 个答案:

答案 0 :(得分:1)

我能够确定有几件事正在发生。第一个是模拟器设置为调试的构建配置。我进入了Edit Scheme并将Build Build for Run更改为“Release”。这允许我在模拟器上重新创建我在设备上看到的内容。它还使调试变得更加容易,因为我可以轻松添加日志以跟踪代码挂起的位置。

问题的根源是我在等待网络块更新标志时有一个while循环无效。我在其他情况下使用过这个hack并且从未遇到过问题。如果我在while循环中添加了一个NSLog命令,那么它会很好地流动,但是在循环中没有任何东西它就会挂起,即使网络调度是在下载数据时也是如此。

为了解决这个问题,我读到了使用 dispatch_semaphore_wait(sema,DISPATCH_TIME_FOREVER) 这解决了我的问题(我假设我的代码也更加可靠)。