如何在 Swift 中实现 AudioServicesSystemSoundCompletionProc?

2023-11-23

我正在尝试在 Xcode 中使用 Swift 为 AudioServicesAddSystemSoundCompletion 中的参数创建 AudioServicesSystemSoundCompletionProc 的实例,但失败了。

这是我到目前为止所得到的

func completionCallback(ssID:SystemSoundID,clientData:UnsafeMutablePointer<Void>) -> Void {

}

var foo:(ssID:SystemSoundID,clientData:UnsafeMutablePointer<Void>) -> Void = completionCallback;

AudioServicesAddSystemSoundCompletion(soundID, nil, nil, foo, nil);

我在一些指南的帮助下写了这篇文章,解释了如何在 Swift 中编写等效的 C 函数指针,但这会引发以下错误:

'(ssID: SystemSoundID, clientData: UnsafeMutablePointer<Void>) -> Void' is not convertible to 'AudioServicesSystemSoundCompletionProc'

文档显示了 Objective-C 声明:

typedef void (*AudioServicesSystemSoundCompletionProc) ( SystemSoundID ssID, void *clientData );

这是使用 Xcode 时显示的声明:

typealias AudioServicesSystemSoundCompletionProc = CFunctionPointer<((SystemSoundID, UnsafeMutablePointer<Void>) -> Void)>

我不确定如何在 Swift 中正确实现 AudioServicesSystemSoundCompletionProc。


从 Swift 2.0 开始,您可以将其作为闭包来完成。

AudioServicesAddSystemSoundCompletion(soundID, nil, nil, { (soundID, clientData) -> Void in

    // Your completion callback...                            
    AudioServicesDisposeSystemSoundID(soundID)

}, nil) 

Further 来自苹果的信息(向下滚动到函数指针):

C 函数指针作为闭包导入到 Swift 中

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

如何在 Swift 中实现 AudioServicesSystemSoundCompletionProc? 的相关文章

  • 使用 QTextCursor 选择一段文本

    使用 Qt 框架选择文本片段时遇到问题 例如 如果我有这个文件 没有时间休息 我想选择 ime for r 并从文档中删除这段文本 我应该如何使用 QTextCursor 来做到这一点 这是我的代码 QTextCursor cursor n
  • 使用 gcc 编译 C 时,预处理的 .i 文件中的数字意味着什么?

    我想了解编译过程 我们可以使用以下命令查看预处理器中间文件 gcc E hello c o hello i or cpp hello c gt hello i 我大致知道预处理器的作用 但我很难理解某些行中的数字 例如 1 usr incl
  • Spotify:使用网络 API 登录不接受重定向 URL

    我正在尝试使用 Web API 登录 Spotify 因为我不需要会话对象 在我的授权方法中 我需要传入重定向 url 但 GET 请求中不接受 iOS 重定向 url 的格式化方式 func authorize create the ur
  • 错误 C2064:术语不计算为采用 1 个参数的函数

    class Student bool Graduate return m bGraduate class School vector
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 锁定文件的一个块

    我有一个大小为 192k 的文件 我想锁定文件的中间部分 例如 我想用 c 锁定文件的 64k 128k 知道如何锁定文件的那部分吗 你需要使用锁定文件Ex http msdn microsoft com en us library win
  • 带有 Unicode 字符的主机名在 Windows 8 中有效

    Uri CheckHostName 回报UriHostNameType Unknown到处都是 但在 Windows 8 上 它又回来了UriHostNameType Dns 为什么突然间带有 Unicode 西里尔字符的主机名在 Wind
  • 在 iOS Swift 中将 NSDate 转换为字符串 [重复]

    这个问题在这里已经有答案了 我正在尝试转换NSDate to a String然后更改格式 但当我经过NSDate to String它正在产生空白 let formatter DateFormatter let myString Stri
  • 为什么NWPathMonitor状态总是满足?

    当没有连接时 我从 URL 会话中收到一条错误消息 指出请求超时 我正在使用网络协议来事先检查连接情况 但显然当我在内部调用它时这不起作用viewDidLoad static func startUpdateProcess let moni
  • C语言:如何获取使用strtok()一次后剩余的字符串

    我的字符串是 A B C D E 分隔符是 如何获取执行 strtok 一次后剩余的字符串 即 B C D E char a A B C D E char separator char b strtok a separator printf
  • 一个对大文件有效的轻量级 XML 解析器?

    我需要解析潜在的巨大 XML 文件 所以我猜这排除了 DOM 解析器 是否有任何优秀的 C 轻量级 SAX 解析器 在占用空间上可与 TinyXML 相媲美 XML的结构非常简单 不需要诸如命名空间和DTD之类的高级东西 只是元素 属性和
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • Global.asax 错误处理程序或自定义 IHttpModule 错误处理程序未捕获未处理的异常

    我有一个类 DPCal EventMove 的一种方法 我想限制使用角色的访问 我有一个 Global asax cs 错误处理程序和一个自定义 IHttpModule 错误处理程序 旨在捕获未处理的异常 并将它们 Server Trans
  • 派生类的聚合初始化

    以下代码无法使用 Visual Studio2017 或在线 GDB 进行编译 我期望它能够编译 因为迭代器只是一个具有类型的类 并且它是从公共继承的 这是不允许的还是在 VS2017 中不起作用 template
  • 将函数作为函数参数传递

    Unity C 似乎无法识别Func lt gt 作为函数委托的符号 那么 如何将函数作为函数参数传递呢 我有一个想法Invoke functionName 0 可能有帮助 但我不确定它是否实际上立即调用该函数 或者等待帧结束 还有别的办法
  • 即使对于新上下文,OnModelCreating 也仅调用一次

    我有多个相同但内容不同的 SQL Server 表 在编写代码优先 EF6 程序时 我尝试为每个程序重用相同的数据库上下文 并将表名称传递给上下文构造函数 然而 虽然每次都会调用构造函数 但尽管每次都是从 new 创建数据库上下文 但 On

随机推荐

  • 时间日历数据结构

    我们正在考虑更新 重写 我们的系统 该系统存储有关人们白天何时可以预订房间等信息 现在 我们将开始时间和房间可用的日期存储在一个表中 并在另一个表中存储各个预约时间 从表面上看 以这种方式存储信息似乎是一个合乎逻辑的想法 但随着时间的推移和
  • Angular 2 - 无法使用上下文读取未定义错误的属性“0”错误上下文:[object Object]

    我的服务是这样的 getRecords Observable
  • 有人有 ffmpeg 图像转视频脚本吗? [复制]

    这个问题在这里已经有答案了 我想拍摄一堆图像并用它们制作视频幻灯片 会有一个应用程序可以做到这一点 对吗 是的 看起来不少 问题是我希望幻灯片与一段音乐同步 而我见过的所有应用程序只允许您显示每张幻灯片整秒的倍数 我希望它们显示 1 714
  • 从另一个表单调用方法

    我尝试从另一种形式调用方法 我的尝试 public partial class newLedPopUp Form Form1 back new Form1 back output Close and public partial class
  • 使用 HTTPStatusCodeResult 和 jQuery 自定义错误消息

    我有一个控制器操作 它将一些 JSON 结果返回到 jQuery Full Calendar 插件 我返回一个HTTPStatusCodeResult如果出现错误 则会显示自定义错误消息 但我无法显示自定义错误消息 警报框中显示的只是默认的
  • 如何将V8编译的javascript变成EXE?

    我知道谷歌的 v8 将 javascript 编译为本机代码 如果我理解正确的话 是二进制 有没有办法获取输出并将其转换为exe 我不认为您可以使用 V8 直接将一段 JavaScript 转换为可执行文件 但您可能可以制作一个将 V8 引
  • 更新深层 ReactJS 状态

    我在 ReactJS 组件状态中有一个项目数组 我正在迭代这些项目来创建表单 我的问题是 当字段发生变化时 如何最好地更新这些项目 例如 var items this state foo bar items map function ite
  • 从 Axios API 返回数据[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Node JS 应用程序来发出和接收 API 请求 它使用 Axios 向另一台服务器发出 get 请求 并使用从 API 调用接收到的数据 第二个片段是脚本从调用返回数据时的情况 它实际上会获取
  • Sprockets::FileNotFound:在 Rails 4 上找不到文件“jquery.ui.all”

    Sprockets FileNotFound couldn t find file jquery ui all 我尝试了迄今为止找到的所有建议 它们都不适合我 我无法再运行正在开发的程序 因此我无法再在线进行新的部署 Gemfile sou
  • find()、findOrFail()、first()、firstOrFail()、get()、list()、toArray() 之间有什么区别

    这些方法有什么区别 find findOrFail first firstOrFail get list toArray 我一直在使用它们 每一个都会给出不同的结果 有时我需要添加toArray 在 的最后get 因为我的函数需要一个数组
  • 安装多处理 python3

    对 Python 来说还很陌生 我想安装 python 的多处理模块 我正在使用 python 3 6 和 pip 版本 9 1 我收到一个错误 这让我相信由于没有与 python 3 兼容的多处理模块 因此可能会发生以下错误 pip3 i
  • 类型 '{ [x: string]: string; 中缺少属性}'

    在这个反应应用程序中有一个带有一些输入字段的表单 这些字段都使用this handleChange与onChange属性 private handleChange event React FormEvent
  • 保证金最高百分比是如何计算的?

    我知道这应该很简单 但是任何人都可以告诉我为什么下面的子框在以下情况下会溢出其父级的容器 margin top 50 应用于孩子身上 保证金最高百分比是如何计算的 container background lightblue padding
  • 正确使用 HTTP 错误代码。 550 - 为什么是 5xx 而不是 4xx?

    今天 当用户没有权限时 一位同事在删除操作中使用了 550 错误 乍一看这对我来说很糟糕 因为据我所知 这种错误对我来说看起来像是客户端 又名 4xx 错误而不是服务器 又名 5xx 当查看描述时 它完全表明它被正确使用 而不是 401 错
  • 使用 HTML5 Canvas 进行图像处理和纹理映射?

    在我正在开发的 3D 引擎中 我成功地绘制了 3D 立方体 就我而言 填充侧面的唯一方法是使用纯色或渐变 为了让事情变得更令人兴奋 我真的很想使用简单的位图来实现纹理映射 关键是我几乎找不到任何关于 JavaScript 图像处理主题的文章
  • Python 使用“quoted-printable”传输编码和“utf-8”内容编码发送电子邮件

    蟒蛇的email mime倾向于使用编码base64 or 7bit and us ascii 我想用quoted printable and utf 8因为这对于人类来说更容易阅读和调试 目前 我的电子邮件看起来像 61353500484
  • Python setup.py 调用 makefile 不包含二进制文件

    一些上下文 我有一些 C 代码 编译后我可以在终端中调用 如下所示 my excec params它生成一些我在 python 中使用的文件来生成图表和其他内容 我想将所有内容打包到 python 库中 包括 C 代码和 python 代码
  • 将事件处理程序添加到新创建的元素

    我正在尝试将新元素添加到有序列表中 并带有删除链接 list ol append li label a href remove a li 但这不起作用 a href remove on click function event alert
  • Stripe Webhook 错误:未找到与负载的预期签名匹配的签名

    我正在使用 Stripe 提供的代码来测试 webhook Stripe 机密和端点机密已经过三次检查 条纹版本 6 19 正文解析器 1 19 当我在 Stripe 仪表板上测试 webhook 时 得到结果 Test webhook e
  • 如何在 Swift 中实现 AudioServicesSystemSoundCompletionProc?

    我正在尝试在 Xcode 中使用 Swift 为 AudioServicesAddSystemSoundCompletion 中的参数创建 AudioServicesSystemSoundCompletionProc 的实例 但失败了 这是