2015-12-07 35 views
0

我正在为我的tvOS应用程序添加TopShelf实现。我也在创建一个集合视图实现,该实现具有与应用内类似的功能。在Mac上的模拟器中都能正常工作,但在使用TestFlight部署到Apple TV时无法正常工作。我尝试使用USB-C电缆尝试捕获一些日志,或者在UIActivityIndi​​cator刚旋转时看看发生了什么。我认为这可能与尝试下载太多图片或其他网络问题有关。我开始缓存图像,并且再次在模拟器中运行良好,但不在设备上运行。tvOS AppleTV硬件上TestFlight安装的应用程序和直接USB运行应用程序之间的区别

当我插入设备并运行应用程序时,它的工作原理与其应用程序一样,即使下载次数更多。我稍后通过TestFlight更新了该版本,并回到了相同的位置。现在,我处于应用程序每次都能使用我自己的视图控制器和TopShelf部件的位置,但如果通过TestFlight部署,则完全不起作用。我无法获取任何日志以了解发生了什么,因为当我连接USB电缆并运行应用程序时,它开始工作。

有没有人看到类似的行为或知道任何方式来解决发生了什么事?

回答

1

我能够确定有一些事情正在进行。第一个是模拟器设置为调试的构建配置。我进入编辑方案并将运行的构建配置更改为“发布”。这允许我在模拟器上重新创建我在设备上看到的内容。它还使调试更容易,因为我可以轻松添加日志来追踪代码挂起的位置。

问题的根源在于我在等待网络块更新标志时有一个while循环无所作为。我在其他情况下使用了这种黑客攻击,并且从未遇到过问题。如果我在while循环中添加了一条NSLog命令,它将流经正常,但即使网络调度已经完成下载数据,循环中也没有任何内容。

为了解决这个问题,我使用 dispatch_semaphore_wait(SEMA,DISPATCH_TIME_FOREVER) 这解决了我的问题,读了(和我假设做我的代码有很多更可靠太)。

相关问题