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

2023-12-15

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

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

在此任务的完成块中,我需要进行一些计算,将 UIImage 添加到调用视图控制器。我有一个名为

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
}

To 之后发送在主队列上,使用:

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")
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中如何在 GCD 主线程上调用带参数的方法? 的相关文章

  • XMPPFramework - 如何创建多用户聊天室?

    我如何使用XMPPFramework在iPhone中实现GroupChat 我尝试了以下代码 但房间没有创建 我如何知道房间是否创建 XMPPRoomDelegate没有被调用 当Stream断开连接时 调用handleDidLeaveRo
  • 如何在 NSMutableArray 中实现“按值分组”?

    我正在使用 NSMutableArray 我想像在 SQL 中那样按日期获取值group by log date logMuArray log currenttime 4 30pm log date 11 12 2011 log durat
  • ios 用户如何取消 Facebook 登录?

    当用户到达此屏幕时 无法取消 我能做些什么 为了首先获得这个视图 我正在运行 NSMutableDictionary params NSMutableDictionary dictionaryWithObjectsAndKeys vid l
  • 使用 iOS 8 自定义键盘发送图像?

    我一直在为 iOS 8 开发自定义键盘 但在尝试使用键盘发送图像时偶然发现了一个问题 我做了一些研究 似乎没有一种简单的方法可以做到这一点UITextDocumentProxy因为只有NSStrings被允许 我是否忽略了使用自定义键盘发送
  • 打乱 NSMutableArray 而不重复并显示在 UIButton 中

    在我看来 我有 12 个按钮 一个数组包含 6 个名称 我想在其中打印数组名称UIButton标题 这是我的代码 texts NSMutableArray alloc initWithObjects 1 2 3 4 5 6 nil UIBu
  • 使用 iPhone 中的地图视图读取当前位置名称

    我读取了当前位置的纬度和经度值 然后成功将该位置固定在 iPhone 中 现在我想使用这个纬度和经度值读取该地名 我使用以下代码来读取查找当前位置 void mapView MKMapView mapView1 didUpdateUserL
  • 模块未使用库演化支持进行编译;使用它意味着无法保证二进制兼容性

    最近我遇到了 SDK 的编译时警告 这是否意味着它不是使用目标设置 构建用于分发的库 构建的 你需要设置Build Libraries for Distribution在项目中Build Settings to No然后它就会消失
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • 当我输入字符时,SwiftUI 中的 TextField 失去焦点

    当我在文本字段中输入字符时遇到问题 在练习集视图 我必须重新单击文本框才能输入另一个字符 如果我从文本字段中删除绑定 我可以流畅地输入文本 我认为这与我的演讲者班级和更新集函数重新创建一个集合实例 因为我必须替换数组中两层深处的一些值 Co
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 如何接收有关与我共享的记录中所做更改的 CloudKit 通知?

    我有两个 iCloud 帐户 A and B 在两个不同的设备上 来自其中之一 A 我将 ckrecord 分享给另一个人 B 像这样 let controller UICloudSharingController controller p
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • 将 SSLSetEnabledCiphers 与 AFNetworking 结合使用来禁用弱密码

    我正在尝试禁用一些密码 弱 例如单个 DES 单个 DES 40 位等 我尝试过使用这段代码在 Cocoa 中使用 CFSocket CFStream 时如何设置 SSL 密码 https stackoverflow com questio
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • Swift:使具有相同“形状”的两种类型符合通用协议

    我有两种不同的类型 它们代表相同的数据 并且具有完全相同的 形状 这两种不同的类型是代码生成的 我被迫处理它们 但是 我想让它们符合一个通用的协议 这样我就可以对这两种类型一视同仁 这是一个例子 假设这是我所坚持的两种代码生成类型 stru
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf

随机推荐

  • 在 Perl 中如何将字符串转换为与自身匹配的正则表达式?

    在 Perl 中如何将字符串转换为与自身匹配的正则表达式 我有一组像这样的字符串 Enter your selection Enter Code Navigate Abandon Copy Exit 我想将它们转换为正则表达式 以便我可以将
  • JavaScript 中不同语法错误的不同行为

    我不是 JavaScript 程序员 所以这可能是一个非常基本的问题 问题是当出现一些特定的语法错误时 整个 JS 代码将无法工作 由于 JS 是被解释的 我认为它应该独立执行每一行 直到错误发生 但它似乎没有发生 至少在下面的情况下 co
  • 获取堆栈帧的运行时类型

    我想知道是否可以在堆栈跟踪中获取方法调用者的运行时类型 考虑以下示例 class Parent public void Foo var stack new StackTrace foreach var frame in stack GetF
  • Swift 3:UITextView - 动态高度 - 以编程方式

    我有一个 KeyboardContainer 类 UIView 的子类 以编程方式创建 因此没有故事板 包括一个 UITextView 供用户在其中键入消息 它在聊天日志类中使用 并设置为 inputAccessoryView 我想在用户打
  • 为什么在 ARM 汇编中使用 LDR 而不是 MOV(反之亦然)?

    我正在浏览这个教程 http www cl cam ac uk freshers raspberrypi tutorials os ok01 html 第一道装配线是 ldr r0 0x20200000 第二个是 mov r1 1 我想ld
  • Matplotlib 颜色条移动第二个 x 轴

    我正在尝试使用以下命令将第二个 x 轴添加到绘图的顶部twiny 如果我制作一个没有颜色条的简单散点图 则顶部 x 轴与底部 x 轴正确对齐 MWE 如下 如果我添加一个颜色条 顶部的 x 轴就会发生位移 我怎样才能解决这个问题 MWE i
  • WP7.1应用程序中的WebClient仅调用一次

    我的问题是 我的WebClient使用云中的功能 http 127 0 0 1 81 Service1 svc Data 但不可能多次调用 例如进行更新 这是我的代码 private void button Click object sen
  • 使用 NumberFormatter 类在 php 中将数字转换为单词

    我在解决 php 中的数字到单词函数时遇到困难 我怎样才能将其格式化为 二十九和二十九 请帮忙 首先 29 29 应该怎么读Twenty nine point two nine 话虽如此 如果你需要准确地得到Twenty nine and
  • 如何使用比根更深的 PHP DOM 将新元素添加到 XML?

    我可以在网上找到的所有有关此问题的示例都涉及简单地将内容添加到文档根目录下的 XML 文件中 但我确实需要做的比这更深入 我的 XML 文件很简单 我有
  • 如何处理来自搜索管理器的回调?

    我们假设以下情况 Activity A calls Search Manager User searches and search results are displayed in Activity B User clicks on a l
  • WCF 服务连接问题 - 也许是安全问题?

    我正在尝试调试 WCF 服务 这个客户端以前是可以连接的 现在却无法连接了 该服务被部署到服务器上 我可以使用浏览器访问服务器的服务页面 然后看到生成客户端的说明 我使用 svcutil 重新生成了客户端代理和配置文件 客户端启动 但对服务
  • 删除 VBA 项目引用

    在 VBA 中 我可以看到 PDFCreator 的三个不同参考 其中之一 参见第二张图片 是本地存储的软件版本 并且可以运行 我想使用这个参考 另外两个是对服务器上存储的版本的引用 它们已损坏 现阶段 我无权重新安装或删除它们 我的问题是
  • 如何在 C# 中迭代​​类的实例?

    有没有办法在 C 中迭代 类的实例 这些实例不在集合中进行跟踪或管理 不在常规框架内 你会need手动跟踪它们 但是 您可以在 Windbg sos 中执行此操作 主要用于调试目的 不适用于例程代码
  • 使用 UIActivityViewController 提供缩略图

    我正在尝试通过以下方式分享带有文本的图像UIActivityViewController 如果我这样做 let activityVC UIActivityViewController activityItems text image app
  • 如何将 scrapy json 行修复到多个 json 文件

    我创建了一个 scrapy 爬虫 将单个项目导出到名为的文件夹中 但我从爬虫中获得了 58 个项目 但没有获得 58 个文件 我们刚刚找到 50 个文件 目前 我使用的是 windows 10 和 python 3 coding utf 8
  • W/IMediaDeathNotifier:媒体服务器死亡

    我正在尝试使用 Google Glass MIC 录制音频 但我不断收到W IMediaDeathNotifier 媒体服务器死亡错误 想法 它应该在第一次触摸时开始录制 并在第二次触摸时停止 但在第一次单击时发生错误 package co
  • 对于每个循环:我们可以填充一个数组吗?

    我可以使用以下语法从数组中读取数据 int a new int 100 for int i 0 i lt 100 i a i i for int element a System out println element 但是否可以同样填充数
  • 如何在 pygame 音乐中播放歌曲一段设定的时间或直到按下按钮?

    我正在使用 pygame 音乐来播放 mp3 一段特定的时间 但是 如何在时间到之前使用按钮来停止 淡出歌曲 我尝试过睡眠 并短循环睡眠 但它没有检测到按钮按下 只需致电pygame mixer music stop当按钮被按下时 if b
  • 键盘将文本字段推离屏幕

    我一直在处理 Flutter 中的一个奇怪的情况 我就是无法弄清楚 问题是 当我尝试在任何类型的可滚动小部件中使用任何类型的文本字段时 当我点击键盘的文本字段时 键盘会将文本字段推离屏幕 脚手架中的所有内容都是空白的 我不能确切地说发生了什
  • 在 Swift 中如何在 GCD 主线程上调用带参数的方法?

    在我的应用程序中 我有一个函数可以创建 NSRURLSession 并使用以下命令发送 NSURLRequest sesh dataTaskWithRequest req completionHandler data response er