gpt4 book ai didi

ios "has active assertions beyond permitted time:"异步任务崩溃

转载 作者:行者123 更新时间:2023-11-29 12:29:26 25 4
gpt4 key购买 nike

我有时会在今天的小部件中遇到崩溃“我的应用程序有超出允许时间的事件断言:”。经过一些谷歌搜索,我猜这是因为我处理后台任务不当造成的。

我使用两种类型的后台任务。 dispatch_async 和 NSURLConnection。我是新手,我不知道哪个是问题所在。 (已经有很多问题和答案,但找不到适合我情况的)

下面是我的代码的简化版本。

    override func viewDidLoad() {
super.viewDidLoad()
loadData()
}
func loadData(){
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0) ) {
dispatch_async(dispatch_get_main_queue()){
self.actInd.startAnimating()
}
var pageSource=self.dpm.readData("https://url.com")
dispatch_async(dispatch_get_main_queue()){
self.refreshUI()
self.actInd.stopAnimating()
}
}
}
func refreshUI(){
//refresh UI
}

func readData(url:String)->NSData?{//This method is in a separate class. dpm
var myUrl=NSURL(string: url)
var request:NSMutableURLRequest=NSMutableURLRequest(URL: myUrl!)
request.timeoutInterval=30
let myHTMLData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)

return myHTMLData
}

总结一下我的意图:

  1. 在 viewDidLoad 上,调用 loadData()
  2. 在 loadData() 中,我使用了 dispatch_async,因为我想在加载数据时我应该使用与主线程不同的线程
  3. 在异步线程中,我调用 readData(),从而调用 NSURLConnection。 (我调用 sendSynchronousRequest,因为我相信 syncronousRequest 没问题,因为它已经在 dispatch_async 中调用了)
  4. 为了在加载完成后刷新我的 UI,我调用了 refreshUI()

有效,但有时会崩溃...我的想法是错误的吗??

感谢任何帮助。

谢谢!!

最佳答案

这些是看门狗超时崩溃报告,您可以通过臭名昭著的“吃坏食物”(0x8badf00d) 异常代码识别它们。有关如何破译崩溃日志和潜在解决方案的更多信息,请访问:

https://developer.apple.com/library/ios/qa/qa1693/_index.html

关于ios "has active assertions beyond permitted time:"异步任务崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com