gpt4 book ai didi

swift - 使用 NSURLConnection 发送异步时的 EXC_BAD_INSTRUCTION

转载 作者:行者123 更新时间:2023-11-30 10:23:23 25 4
gpt4 key购买 nike

这个函数有一个奇怪的问题:

func retrieveToken() {
var postRequest = NSMutableURLRequest(URL: NSURL(string: "http://example.com"));
postRequest.HTTPMethod = "POST"
var responseData = NSMutableData();
NSURLConnection.sendAsynchronousRequest(postRequest, queue: NSOperationQueue.mainQueue(), completionHandler: { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
responseData = NSMutableData(data:data);
})
var responseDict:Dictionary<String,AnyObject> = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableLeaves, error: nil) as Dictionary;
}

此函数应该向 URL(有效)发送 POST 请求以接收 token 。但是,由于某种原因,当我运行此代码时,我在将 postRequest 的 HTTPMethod 设置为 POST 的行处收到 EXC_BAD_INSTRUCTION。我觉得我忽略了一些非常明显的东西,但我看不到是什么。怎么了?

最佳答案

您忽略了(至少)两个要点。

  1. 在完成处理程序中传递的数据是可选的,因此您需要做好准备,让它为零。
  2. 您的 NSJSONSerialization 在调用 sendAsynchronousReguest 之后立即执行,并且此时不会调用完成处理程序。

这些问题中的第一个问题很可能会导致您遇到崩溃,因为您在某些时候尝试取消引用 data 但它恰好为零。但 NSJSONSerialization 可能不喜欢传递空的 NSMutableData 实例。

阅读可选内容,然后阅读异步编程,然后再次看看您想要实现的目标。仅使用同步网络请求将导致糟糕的用户体验,因为界面会卡住以等待网络请求完成。

关于swift - 使用 NSURLConnection 发送异步时的 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24325678/

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