子视图是从主线程以外的线程布局的

时间:2013-03-14 05:10:40

标签: ios

错误信息如下: bool _WebTryThreadLock(bool),0xf28fbd0:试图从主线程或Web线程以外的线程获取Web锁。这可能是从辅助线程调用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造成的。但我不知道为什么它不是在主线程中更新

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

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

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

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

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

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

以上是我的功能需求和我的实现。当它输入* A 时,我没有创建新线程,所以我认为自定义视图不会被不在main中的线程更新。但它会崩溃当我反复点击不同的音频播放时。总是发生在我重复几次而不是规律性的时候。     它会发生在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.

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

0 个答案:

没有答案