当前位置: 首页 > 面试题库 >

在Swift中,如何在GCD主线程上调用带有参数的方法?

云宝
2023-03-14
问题内容

在我的应用程序中,我有一个函数可以使NSRURLSession并使用发送一个NSURLRequest

sesh.dataTaskWithRequest(req, completionHandler: {(data, response, error)

在此任务的完成块中,我需要进行一些计算,以将UIImage添加到调用的viewcontroller中。我有一个叫做

func displayQRCode(receiveAddr, withAmountInBTC:amountBTC)

进行添加UIImage的计算。如果我尝试在完成块中运行添加视图的代码,则Xcode会引发错误,提示我在后台进程中无法使用布局引擎。所以我在SO上找到了一些代码,试图在主线程上排队一个方法:

let time = dispatch_time(DISPATCH_TIME_NOW, Int64(0.0 * Double(NSEC_PER_MSEC)))

dispatch_after(time, dispatch_get_main_queue(), {
    let returned = UIApplication.sharedApplication().sendAction("displayQRCode:", to: self.delegate, from: self, forEvent: nil)
})

但是,我不知道如何向此函数调用添加参数“ receiveAddr”和“
amountBTC”。我将如何执行此操作,或者有人可以建议将方法调用添加到应用程序主队列的最佳方法?


问题答案:

Swift的现代版本DispatchQueue.main.async用于调度到主线程:

DispatchQueue.main.async { 
  // your code here
}

要在主队列上 分派之后 ,请使用:

DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
  // your code here
}

使用的旧版Swift:

dispatch_async(dispatch_get_main_queue(), {
  let delegateObj = UIApplication.sharedApplication().delegate as YourAppDelegateClass
  delegateObj.addUIImage("yourstring")
})


 类似资料:
  • 我正在学习Swift,需要随时调用我的方法,下面是代码: 返回错误- 我也试过像和都没有成功。 这里是我调用的方法:

  • 问题内容: 我正在尝试在Swift中上传带有参数的图像。当我尝试此代码时,我可以获取参数,但不能获取图像 编辑2: 我认为保存的UIImage的路径存在一些问题,因为php告诉我该文件已经存在,这是因为我将其发送为空白 问题答案: 在下面的评论中,您告知我们您正在使用语法来检索文件。这意味着您要创建一个请求。该过程基本上是: 为您的请求指定边界。 指定请求的一个,以指定该请求及其边界。 创建请求正

  • 我认为我对保存的UIIimage的路径有一些问题,因为php告诉我该文件已经存在,我认为这是因为我以空白方式发送它

  • 我正在尝试为创建网球锦标赛的应用程序填充队列 当我单击按钮“Crear Torneo”(如图所示)时,我正在方法“crearTorneo”中创建队列。当我点击“Añadir”按钮(也可以在图像中看到)时,它会获取几个TextFields中的信息并在“llenarCola”方法中创建一个对象,返回该对象的目的是填充队列。 现在,这是我的llenarCola方法: 这是我的crearTorneo方法:

  • 我正在用Swift开发一个iPhone应用程序。我正在使用Alamofire框架来处理http请求。我将用于POST,GET等,如下所示: 我使用将图像上载到服务器: 谁能帮我解决这个问题? 谢谢!:)

  • 问题内容: 我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类: 这是调用代码: 我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么 错。 任何指针将不胜感激。 谢谢 问题答案: public class Test { 为我工作。 将您的N []投射到对象 在实例上调用,而不在类上调用