在 swift 3 中将 UnsafeMutableRawPointer 转换为 UnsafeMutablePointer

2024-01-07

我有这个代码

let grayData = UnsafeMutablePointer<UInt8>(other: malloc(width * height * sizeof(UInt8)))

它无法在 Swift 3 中编译。我该如何解决这个问题?


我遇到了类似的问题,但与malloc。如果你的代码需要使用 Swift 3 处理 C 库,你必须处理void *这相当于UnsafeMutableRawPointer在 Swift 3 中。您的代码需要将其视为某种结构。但不知何故,Swift 3 编译器对我的转换非常严格。我花了一些时间来解决这个问题,并且我喜欢分享我的代码如何做到这一点。

这是演示强制转换的代码UnsafeMutableRawPointer to UnsafeMutablePointer<T>,修改其pointee,并确保原来的Context已更新。

struct Context {
    var city = "Tokyo"
}

var context: Context = Context()
let rawPtr = UnsafeMutableRawPointer(&context)
let opaquePtr = OpaquePointer(rawPtr)
let contextPtr = UnsafeMutablePointer<Context>(opaquePtr)

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

在 swift 3 中将 UnsafeMutableRawPointer 转换为 UnsafeMutablePointer 的相关文章

  • 如何在 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
  • NSNotificationCenter 为“观察者”和“对象”保留什么类型的引用?

    任何人都可以澄清 阐明有关情况 NSNotificationCenter addObserver selector name object 观察者 和 对象 参数的通知中心保留哪些类型的引用 从通知中心删除观察者的最佳实践是什么 多线程应用
  • 将通配符包标识符转换为单个 ID

    我在应用程序商店中有一个使用通配符包标识符的应用程序 我想实现应用内购买 这需要非通配符ID 如何将现有应用的通配符 ID 转换为静态 ID 以进行应用内购买和推送通知 应用程序的捆绑标识符在更新之间必须始终保持相同 但 AppID 实际上
  • Swift 仅删除字符串中的尾随空格

    SO 中的许多示例都固定两侧 即前导和尾随 我的要求只是关于尾随 我的输入文本是 保持我的左侧 期望的输出 保持我的左侧 当然 这个命令会删除两端 let cleansed messageText trimmingCharacters in
  • 如何获取原始触摸屏数据?

    我知道我可以在 iPhone 应用程序中获取触摸事件 但这些触摸事件都被我过滤掉了 如果我将设备按在脸上 它会过滤掉这些触摸事件 因为它可以检测到它不是手指 我如何获得原始触摸事件 而不以任何方式过滤 没有用于此目的的公共 API 您可以获
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • iPhone 上的双精度与浮动

    我刚刚听说 iPhone 本身无法进行双倍操作 从而使它们比常规浮动慢得多 这是真的 证据 我对这个问题很感兴趣 因为我的程序需要高精度计算 而且我将不得不在速度上妥协 iPhone 可以在硬件中执行单精度和双精度算术 在 1176 原始
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • -[_SwiftValueencodeWithCoder:]:无法识别的选择器发送到实例

    尝试使用 NSCoder 时出现错误 玩家 swift class Player NSObject NSCoding private var playerName String private var playerScore Int pri
  • 如何使用 NSURLConnection 上传文件和其他参数

    我在用NSURLConnection发送相同的数据 NSString 到服务器 我想向它们添加图像或文件 那么内容类型的值是多少 Encoding NSData encodingData NSMutableDictionary dictio
  • 从 NSMutableArray 中获取最后五个值

    我有一个NSMutableArray其计数为 10 我想提取最后 5 个值并将它们存储在另一个数组中 我怎样才能做到这一点 我觉得 NSArray subarrayWithRange NSRange range doc https deve
  • 自动调整大小蒙版如何工作?

    我找到了很多有关自动调整大小的信息 但没有一个能够解决我的问题 我有一个 ViewController RAViewController 它在 loadView 方法中调用视图 如下所示 void loadView Set Navigati
  • 在 Objective-c 中使用 NSDate 获取昨天

    我需要使用 NSDate 对象获取昨天的日期 任何想法 编辑 已解决 NSDate yesterday NSDate dateWithTimeIntervalSinceNow 86400 试试这个代码 通过这种方式 您可以获得接下来的几天
  • 如何调整 UITableView 的 tableHeaderView 的大小?

    我在调整 tableHeaderView 大小时遇到 问题 这么简单是行不通的 1 创建一个UITableView和UIView 100 x 320像素 2 将UIView设置为UITableView的tableHeaderView 3 构
  • Swift 3 IF 条件中的可选链接错误?

    这段代码在 Swift 2 3 中运行得很好 我不明白为什么我必须解开TestClass检查数字是否大于 4 这是链接选项的全部要点 以节省额外的调用 现在为了使这项工作正常进行 我必须检查是否testClass nil 或使用隐式解包if
  • 解决听写/自定义文本视图错误

    我有一个实现的视图UIKeyInput并覆盖shouldBecomeFirstResponder回来YES 点击此视图时 键盘会弹出 如果用户点击听写按钮 按下 完成 然后尝试关闭键盘 应用程序将崩溃并显示 Fatal Exception
  • 快速转换:错误 - CGPathAddArc

    我正在尝试将我的 Swift 2 代码转换为最新语法 Swift 3 我收到以下错误 Nil 与预期的参数类型 UnsafePointer 不兼容 斯威夫特2代码 CGPathAddArc 路径 nil overlayView frame
  • 在 swift 中获取用户可读的类名版本(在 objc NSStringFromClass 中就可以了)

    Swift 中是否有相当于 NSStringFromClass 的类名 可以提供用户可读的版本 我尝试将它与我创建的本机 Swift 类一起使用 但如您所见 结果似乎是编译器对类名的内部表示 println NSStringFromClas
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐