如何将数组转换为 UnsafeMutablePointer Swift 3.0?

2024-04-10

这是我在以前版本的 Swift 中的可行代码:

 let imageOptionsDictKeys = [ kCVPixelBufferPixelFormatTypeKey, kCVPixelBufferWidthKey,  kCVPixelBufferHeightKey, kCVPixelBufferOpenGLESCompatibilityKey, kCVPixelBufferIOSurfacePropertiesKey]
 let imageOptionsDictValues = [ cvPixelFormatType,  frameW, frameH, boolYES]

 var keyCallbacks = kCFTypeDictionaryKeyCallBacks
 var valueCallbacks = kCFTypeDictionaryValueCallBacks

 let imageOptions = CFDictionaryCreate(kCFAllocatorDefault, UnsafeMutablePointer(imageOptionsDictKeys), UnsafeMutablePointer(imageOptionsDictValues), 4, &keyCallbacks, &valueCallbacks)

Swift 3.0 发生变化后,我必须将键和值数组转换为UnsafeMutablePointer<UnsafeRawPointer?>用于创建 CFDictionary。

这边走:

    let imageOptionsDictKeysPointer =  UnsafeMutablePointer<UnsafeRawPointer?>.allocate(capacity: 1)
    imageOptionsDictKeysPointer.initialize(to: imageOptionsDictKeys)

给出错误访问错误。

阅读文档后,我尝试编译此代码:

        let imageOptionsDictKeys = [kCVPixelBufferPixelFormatTypeKey, kCVPixelBufferWidthKey,  kCVPixelBufferHeightKey, kCVPixelBufferOpenGLESCompatibilityKey]
        let imageOptionsDictKeysRawPointer = Unmanaged.passUnretained(imageOptionsDictKeys).toOpaque()
        let imageOptionsDictKeysPointer =  UnsafeMutablePointer<UnsafeRawPointer?>.allocate(capacity: 1)
        imageOptionsDictKeysPointer.initialize(to: imageOptionsDictKeysRawPointer)

        let imageOptionsDictValues = [ cvPixelFormatType,  frameW, frameH, boolYES]
        let imageOptionsDictValuesRawPointer = Unmanaged.passUnretained(imageOptionsDictValues).toOpaque()
        let imageOptionsDictValuesPointer =  UnsafeMutablePointer<UnsafeRawPointer?>.allocate(capacity: 1)
        imageOptionsDictValuesPointer.initialize(to: imageOptionsDictValuesRawPointer)

        let imageOptions = CFDictionaryCreate(kCFAllocatorDefault, imageOptionsDictKeysPointer, imageOptionsDictValuesPointer, 4, &keyCallbacks, &valueCallbacks)

但错误无法推断通用参数“实例”出现在行中非托管.passUnretained(array).toOpaque()

我现在不知道如何以编程方式创建 CFDictionary。


我刚刚解决了类似的问题,将数组转换为UnsafeMutablePointer< UnsafeMutablePointer<T>>您可以在这里找到:C 类型 float 的 Swift 3 UnsafeMutablePointer 初始化** https://stackoverflow.com/questions/40128275/swift-3-unsafemutablepointer-initialization-for-c-type-float/40135482#40135482

要使用相同的方案转换 swift 数组,请使用UnsafeMuTablePointer正如这里所建议的:http://technology.meronapps.com/2016/09/27/swift-3-0-unsafe-world-2/ http://technology.meronapps.com/2016/09/27/swift-3-0-unsafe-world-2/

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

如何将数组转换为 UnsafeMutablePointer Swift 3.0? 的相关文章

随机推荐

  • 由于 lambda 表达式,缩小失败

    当 ASP NET 捆绑程序尝试缩小以下脚本时 它会失败 Minification failed Returning unminified contents 164 59 60 run time error JS1195 Expected
  • 为什么改变 SO_RCVBUF 的值不起作用?

    我正在制作一个程序 它创建一个原始套接字以读取所有流量 在调用socket 和recvfrom 之间 最后一个在循环中从缓冲区中取出所有数据包 我等待了5秒 当我运行该程序时 我使用 hping3 命令以 更快的模式 以快速填充缓冲区 向我
  • ASP.Net MVC Ajax.BeginForm OnComplete 在 Razor 视图中传递 C# 参数

    我在 MVC c Razor 视图中有以下代码 string url Projects MonthRangesScriptsPartial using Ajax BeginForm MonthRanges Projects new id V
  • SQL Server 的 SELECT JOIN 语句导致的死锁

    当执行带有两个表的 JOIN 的 SELECT 语句时 SQL Server 似乎 分别锁定语句的两个表 例如通过像这样的查询 这 SELECT FROM table1 LEFT JOIN table2 ON table1 id table
  • 求 O(log n) 中值

    问题是我们如何找到整数值接收流的中位数 例如 对于 12 14 252 243 15 中位数是 15 O log N 其中 N 是值的数量 请注意 我们有一个整数值流 因此通过接收每个值 我们必须重新找到中位数 例子 Input media
  • 如何修复 Nodejs 中的“无法读取未定义的属性推送”错误?

    我编写了一个简单的应用程序来学习 Nodejs 但是当我在 cmd 中运行 nodemon index js 时出现此错误 类型错误 无法读取未定义的属性 push 应用程序崩溃 启动前等待文件更改 我已遵循 udemy 课程中的所有说明来
  • C 可变长度数组存储持续时间

    On this http en cppreference com w c language storage duration网站上有以下段落 强调我的 自动存储时间 当进入声明对象的块时分配存储空间 并在通过任何方式 goto return
  • 从 PHP 中检索 Javascript 中的 JSON 数组

    我试图从 PHP 返回一个 json 编码的数组到 JS 我之前已经这样做过很多次了 但现在我遇到了一个奇怪的错误 我成功获取数据并且它在 chrome 中显示数组 但是 如果我指定了 我无法让它进入AJAX成功功能dataType jso
  • 何时使用字节数组&何时使用字节缓冲区?

    字节数组和字节缓冲区有什么区别 另外 在什么情况下应该优先选择其中之一 我的用例是用 java 开发的 Web 应用程序 实际上有多种处理字节的方法 我同意 选择最好的并不总是那么容易 the byte the java nio ByteB
  • EnterpriseLibrary.Logging 写入相差 1 小时的日志

    我们在日志记录方面遇到了一个奇怪的问题 我们正在使用Microsoft Practices EnterpriseLibrary Logging用于登录我们的 Web 应用程序的库 问题是它写入的日志与当前系统时间有 1 小时的差异 我们的记
  • Apache Geode CacheServerException 在密钥集请求期间未找到区域

    我是 Geode 新手 并且已经开始默认locator and server根据5 分钟内的晶洞 https cwiki apache org confluence display GEODE Index Index Geodein5min
  • 如何在 Eclipse 中找到方法实现的用法?

    当我想在java中找到普通方法的用法时 这是相当简单和直接的CTRL SHIFT G 但是如果这个方法有一个super定义 实现 Eclipse 将向我展示层次结构类型中所有类型的用法 例如 如果我有一个toString 方法在我的类中 我
  • 将 ViewChild 用于动态元素 - Angular 2 和 ionic 2

    我想使用多个离子载玻片 https ionicframework com docs api components slides Slides 我动态添加的 但我不能使用 viewChild 请提出解决此问题的方法 模板 html div d
  • 如何使用 My.Settings.Save Visual Basic 保存窗体背景图像

    我正在尝试用 Visual Basic 创建一个操作系统 当然是基于程序的 它需要个性化 我希望用户能够从存储在项目资源中的一组选定图像中进行选择 并且我希望保存该图像 以便他们下次登录软件时 表单具有相同的他们选择保存的图像 额外的信息
  • python中的IOE错误“没有这样的文件或目录”

    我正在编写一个 Django 项目 涉及从表中检索数据 我有一个模块 它具有检索一些数据的行 snp data txt是模块同一目录中的文件 data file snp data txt 当我在 django 项目之外单独调用该模块时 该模
  • 整数求和布鲁斯,短+=短问题

    C 程序 short a b a 10 b 10 a a b Error Cannot implicitly convert type int to short we can also write this code by using Ar
  • 允许重复键并保持插入顺序的映射

    目前我正在使用 LinkedHashMap 来维护插入顺序 我使用的 LinkedHashMap 的语法 private LinkedHashMap
  • 防止mysql中的值变为负数的最佳方法

    我们有一个表 通过在该表中记录交易来维护帐户余额 即最近一行是帐户余额 在记录提款时 我们希望确保余额 永远不会出现负数 我们提出的解决方案类似于 INSERT INTO txns account id prev balance txn t
  • WinFORMS 中的 WPF 用户控件:项目结构

    SCENARIO 我决定为我的新应用程序使用 WPF 技术 必须通过从 WinForms 窗口单击菜单来调用此应用程序 因此 我创建了一个 WPF UserControl 库 并将其集成以使用 Element Host 在父 WinForm
  • 如何将数组转换为 UnsafeMutablePointer Swift 3.0?

    这是我在以前版本的 Swift 中的可行代码 let imageOptionsDictKeys kCVPixelBufferPixelFormatTypeKey kCVPixelBufferWidthKey kCVPixelBufferHe