错误信息如下: 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.
我发布了这个问题,因为我想知道导致我的自定义视图从主线程以外的线程更新的原因。如果有人知道,请告诉我!谢谢