0

错误信息如下: bool _WebTryThreadLock(bool), 0xf28fbd0: 试图从除主线程或网络线程之外的线程获取网络锁。这可能是从辅助线程调用 UIKit 的结果。现在崩溃...

1   _ZL17_WebTryThreadLockb

2   WebThreadLock

3   -[UIWebTiledView layoutSubviews]

4   -[UIWebDocumentView layoutSubviews]

5   -[UIView(CALayerDelegate) layoutSublayersOfLayer:]

6   -[NSObject performSelector:withObject:]

7   -[CALayer layoutSublayers]

8   CA::Layer::layout_if_needed(CA::Transaction*)

9   CA::Context::commit_transaction(CA::Transaction*)

10  CA::Transaction::commit()

11  CA::Transaction::pop()

12  +[CATransaction commit]

13  FigLayerSynchronizerSynchronizeToMoment

14  itemremote_TimebaseSynchronizationUpdate

15  FigPlayerRemoteCallbacksServer_TimebaseSynchronizationUpdate

16  _XTimebaseSynchronizationUpdate

17  figmoviecallbacks_server

18  fpr_ClientPortCallBack

19  FigExpressNotificationThread

20  figThreadMain

21  _pthread_start

22  thread_start

我知道这是由于在主线程以外的线程中更新 UI 引起的。但我不知道为什么它不是在主线程中更新

以下是描述: 只是类似于应用程序包风影音。支持自动播放,最小化播放界面,关闭播放界面。当我点击picWall中的一张图片时,它跳转到一个uiviewcontroller A,并播放音频文件,显示音频文件内容并更新progressview的进度。

A由自定义视图和movieplaycontroller 变量组成。

自定义 UIView 由 textview(显示音频文件内容)、progressView 、图片、最小化按钮、关闭按钮组成。

因为当我点击最小化按钮时它应该继续播放当前音频,而当音频正在播放时,我应该在我的自定义 UIView 中更新进度条的进度,所以我将 movieplaycontroller 变量和自定义视图定义为全局变量。

movieplaycontroller 变量是在 appdelegate 文件中初始化的,但自定义视图是在A中初始化的。

当我点击最小化按钮和关闭按钮时,我会消失A,同时释放自定义视图。

以上是我的功能需求和我的实现。当它进入 * A时,我没有创建新线程,所以我认为自定义视图不会被不在主线程中的线程更新。但是当我反复点击不同的音频播放时它会崩溃。我总是发生这种情况重复了几次,没有纪律。iPhone4上会出现,iPhone4s,iphone 5上没看到。我没有iPhone 3gs,不知道会不会也出现。*

Now I modify my code to add the custom view by the function  ”performSelectorOnMainThread“ in A's init function.It seemed solved.

我发布了这个问题,因为我想知道导致我的自定义视图从主线程以外的线程更新的原因。如果有人知道,请告诉我!谢谢

4

0 回答 0