MPMoviePlayerController线程锁定问题--Iphone开发

时间:2010-12-10 16:20:33

标签: iphone objective-c multithreading cocoa-touch mpmovieplayercontroller

我的应用主线程在开头显示电影,而其他线程正在执行后台任务。 然而,有些人正在使用PerformSelectorInMainThread来做一些事情。 会发生什么事情,有时候电影会无限期地被卡住,有时候不会被卡住,有时几秒钟之后就会获得自由。 我正在尝试调试它,但是当我暂停应用程序时我暂停了XCode所有我看到的是汇编代码,我无法从中理解任何东西。 (我想在Windows上像“符号”这样的东西会很酷) 有没有办法更彻底地分析主线程上运行的内容,并且在播放时可能会卡住我的视频? 此外,视频如何被卡住,如果我正在播放来自主线程的视频而其他线程调用PerformSelectorInMainThread,那么实际发生了什么(我假设它会将选择器添加为事件但不会干扰电影来自一直玩到最后)?

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用Shark(仪器工具之一)来分析样品?

当事情变得“卡住”时,可能意味着CPU正在搅拌。 Shark在短暂的爆发期间经常对CPU进行采样(很好地,在人类方面,非常频繁)(我会将其保持在5-10秒之内),并告诉你CPU在什么任务上花费的时间百分比。

它正是你所提到的 - 反向设计所有汇编代码看起来更像调试器(好吧,不是100%,但足够)。

这将是第一步 - 确定您的performSelectorOnMainThread:代码正在调用的处理器繁重的任务导致视频崩溃。然后,一旦你知道它是什么 - 答案将是显而易见的 - 或者你将不得不改变你的架构:)