如果我的iOS应用程序冻结了整个手机,这被认为是操作系统本身的一个缺陷吗?

如果我的iOS应用程序冻结了整个手机,这被认为是操作系统本身的一个缺陷吗?,ios,objective-c,crash,avplayer,freeze,Ios,Objective C,Crash,Avplayer,Freeze,我正在开发一个iOS应用程序,使用AVPlayer播放不同的mp4视频。大多数情况下,它工作正常。但有时我的应用程序会完全冻结手机。我没能在什么地方捕捉到它,但我想它通常就发生在这条线之后。我通过在打印[[NSDate date]timeIntervalSince1970]的地方放置一堆NSLog来验证这一点: mylayer =[AVPlayerLayer playerLayerWithPlayer:myplayer]; 冻结持续几秒钟(有时更长) 即使我按下home(主页)按钮或lock(

我正在开发一个iOS应用程序,使用AVPlayer播放不同的mp4视频。大多数情况下,它工作正常。但有时我的应用程序会完全冻结手机。我没能在什么地方捕捉到它,但我想它通常就发生在这条线之后。我通过在打印
[[NSDate date]timeIntervalSince1970]
的地方放置一堆NSLog来验证这一点:

mylayer =[AVPlayerLayer playerLayerWithPlayer:myplayer];
冻结持续几秒钟(有时更长)

即使我按下home(主页)按钮或lock(锁定)按钮,手机也没有响应。 最后我必须按下锁定按钮6-10秒,这会使整个手机重新启动

请注意,在此期间,CPU和内存的使用不会出现峰值

我知道我的代码可能有缺陷,但操作系统是否应该足够智能,不让单个应用程序完全冻结整个手机?这会被认为是一个操作系统错误吗?如果是这样的话,我可能会在Apple上记录DTS


****编辑:添加代码****

注意注释“//这是冻结的行”

输出: 注意时间7.6和7.7之间的21秒间隔:

2016-06-04 01:27:20.853 XYZ[402:49072] current time 7: 1465018040.853897
2016-06-04 01:27:20.875 XYZ[402:49072] current time 7.5: 1465018040.875220
2016-06-04 01:27:20.875 XYZ[402:49072] current time 7.6: 1465018040.875871
2016-06-04 01:27:41.841 XYZ[402:49072] current time 7.7: 1465018061.841419
2016-06-04 01:27:41.841 XYZ[402:49072] current time 8: 1465018061.841863
编辑2:

我在xcode中暂停了应用程序,并查看了左边的线程在做什么。以下是一个屏幕截图:


这可能是调试和运行XCode的症状。你是对的,通常你应该能够点击主页按钮并退出应用程序


编辑您的方案并从调试更改为发布。通过Xcode运行一次构建。关闭应用程序,然后从设备的主屏幕启动它而不使用Xcode

我注意到我的应用程序即使在未处于调试模式且未连接到mac时也会冻结操作系统。如果您可以更新您的问题,并包含更多与导致问题的操作相关的代码,我们可能会提供帮助,那么当我的互联网速度较慢时(当我在火车上,我的网络很糟糕时),这种情况尤其会发生。听起来好像主线程上有什么东西正在锁定所有内容。感谢您的帮助,我刚刚添加了代码和NSLog输出。“mlayer”是@property(原子,强)吗?如果没有,这可能会有所帮助。这看起来像某种死锁。它在接口中定义为实例变量。定义为:AVPlayerLayer*mylayer;
2016-06-04 01:27:20.853 XYZ[402:49072] current time 7: 1465018040.853897
2016-06-04 01:27:20.875 XYZ[402:49072] current time 7.5: 1465018040.875220
2016-06-04 01:27:20.875 XYZ[402:49072] current time 7.6: 1465018040.875871
2016-06-04 01:27:41.841 XYZ[402:49072] current time 7.7: 1465018061.841419
2016-06-04 01:27:41.841 XYZ[402:49072] current time 8: 1465018061.841863