【问题标题】:ios performSelector:withObject:afterDelay: in viewDidLoad freeze view pushedios performSelector:withObject:afterDelay: in viewDidLoad 冻结视图推送
【发布时间】:2012-10-04 10:53:14
【问题描述】:

我将视图控制器推入导航

在 viewDidLoad 方法中,我把这个方法放在最后一行:

[self performSelector:@selector(startLoadAndParseXML) withObject:nil afterDelay:0.];

像往常一样,在我的应用程序中的其他视图控制器中,视图控制器被推送,然后方法 startLoadAndParseXML 运行,并且应用程序没有被冻结。但是只有一个视图控制器,我不知道为什么有时应用程序会冻结,并且只有在方法 startLoadAndParseXML 完成后才会推送视图。

谁能解释一下?谢谢你

【问题讨论】:

  • 宁可在后台执行那个糟糕的选择器,对吧?我很惊讶这能奏效。
  • 是的,它在当前线程上执行

标签: ios delay viewdidload performselector


【解决方案1】:

performSelectorWithObject:afterDelay: 在当前运行循环中启动选择器,而不是在后台线程中,因此如果您从主线程调用它,网络操作将冻结 UI,

【讨论】:

  • 嗨,其他类的相同网络操作不会冻结应用程序。我的应用程序在许多视图控制器上具有相同的 startLoadAndParseXML 操作,并且冻结只发生在一个类中。我认为是我的错,但我找不到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2019-05-27
  • 2012-09-21
相关资源
最近更新 更多