ios performSelector:withObject:afterDelay: in viewDidLoad 冻结视图推送
Posted
技术标签:
【中文标题】ios performSelector:withObject:afterDelay: in viewDidLoad 冻结视图推送【英文标题】:ios performSelector:withObject:afterDelay: in viewDidLoad freeze view pushed 【发布时间】:2012-10-04 10:53:14 【问题描述】:我将视图控制器推入导航
在 viewDidLoad 方法中,我把这个方法放在最后一行:
[self performSelector:@selector(startLoadAndParseXML) withObject:nil afterDelay:0.];
像往常一样,在我的应用程序中的其他视图控制器中,视图控制器被推送,然后方法 startLoadAndParseXML 运行,并且应用程序没有被冻结。但是只有一个视图控制器,我不知道为什么有时应用程序会冻结,并且只有在方法 startLoadAndParseXML 完成后才会推送视图。
谁能解释一下?谢谢你
【问题讨论】:
宁可在后台执行那个糟糕的选择器,对吧?我很惊讶这能奏效。 是的,它在当前线程上执行 【参考方案1】:performSelectorWithObject:afterDelay:
在当前运行循环中启动选择器,而不是在后台线程中,因此如果您从主线程调用它,网络操作将冻结 UI,
【讨论】:
嗨,其他类的相同网络操作不会冻结应用程序。我的应用程序在许多视图控制器上具有相同的 startLoadAndParseXML 操作,并且冻结只发生在一个类中。我认为是我的错,但我找不到。以上是关于ios performSelector:withObject:afterDelay: in viewDidLoad 冻结视图推送的主要内容,如果未能解决你的问题,请参考以下文章