操作系统正在杀死线程

Or *_*Ron 6 iphone multithreading ipad ios

我正在编写一个从影片剪辑中提取帧的应用程序.我设计它,以便提取将在一个单独的线程上完成,以防止应用程序冻结.提取过程本身占用了大量资源,但在模拟器中使用时效果很好.但是,在为iPad构建时存在问题.当我执行另一个动作(我告诉我的AV播放器在我提取帧时播放)时,线程意外停止工作,我相信它正在被杀死.

我认为这是因为我使用了大量资源,但并不完全确定.

以下是我的问题:1.如何判断我的线程是否停止?2.如果它真的来自过度处理我该怎么办?我真的需要这个行动来实施.

下面是一些使用的代码:创建线程:

[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];

我会发布你需要的任何信息,非常感谢!

更新 我现在正在使用GCD,它为我填充线程.然而,操作系统仍然杀死线程.

我确切知道它何时发生.当我告诉我的[AVplayer play]; 它杀了线程.

这个问题只发生在实际的iPad而不是模拟器上

Dun*_*age 0

当某些东西在模拟器中工作但在设备上不起作用时,一个明显的解释肯定是资源限制问题。但有时模拟器也无法准确模拟设备功能的其他方面。所以我想知道是否可以对这种情况有任何其他解释。我想到了一种可能性,这可能是对有限资产\xe2\x80\x94访问AV资产\xe2\x80\x94的竞争,这意味着当你开始播放它时,它也不再可供处理(并且由于某种原因,模拟器中的错误不会显示此限制。)

\n

在AV Foundation 编程指南中, Apple在“Playing Assets”下指出:

\n
\n

尽管最终您想要播放资产,但您不\xe2\x80\x99 直接向 AVPlayer 对象提供资产。相反,您提供 AVPlayerItem 的实例。播放器项目管理与其关联的资产的呈现状态。播放器项目包含与资源中的轨道相对应的 AVPlayerItemTrack\xe2\x80\x94 的播放器项目 track\xe2\x80\x94 实例。

\n

这种抽象意味着您可以同时使用不同的播放器播放给定的资产,但每个播放器以不同的方式呈现。例如,使用项目轨道,您可以在播放期间禁用特定轨道(您可能不想播放声音组件)。

\n
\n

所以我想知道 \xe2\x80\x94 您是否使用 AVPlayerItems 来访问您的资产,这会让两个操作同时发生?如果是这样,至少排除了那个特定方向。但如果没有,可能值得研究一下是否能解决问题。

\n

可能是抓住了救命稻草。但可能会通向某个地方。

\n