如何在 Swift 中分配/释放不安全指针?

2024-02-28

在 Beta 4 中,我的代码运行良好:

var red, green, blue, alpha: UnsafePointer<CGFloat>
red = UnsafePointer<CGFloat>.alloc(1)
green = UnsafePointer<CGFloat>.alloc(1)
blue = UnsafePointer<CGFloat>.alloc(1)
alpha = UnsafePointer<CGFloat>.alloc(1)
myColor.getRed(red, green: green, blue: blue, alpha: alpha)

CGContextSetRGBStrokeColor(context, red.memory, green.memory, blue.memory, 1)

red.dealloc(1)
green.dealloc(1)
blue.dealloc(1)
alpha.dealloc(1)

现在使用 Beta5,我收到错误“'UnsafePointer.Type' 没有名为 'alloc' 的成员”。

我想做的就是根据 UIColor 设置 CGContext 的描边颜色。我现在该怎么做呢? “withUnsafePointers”函数有点像个笑话 - 它给出了奇怪的错误,并且最多只需要三个不安全指针,而我在这种情况下尝试使用四个。


这可行,Swift 足够聪明,知道如何处理&操作员:

let color = UIColor.purpleColor()
var r:CGFloat, g:CGFloat, b:CGFloat, a:CGFloat = 0
color.getRed(&r, green: &g, blue: &b, alpha: &a)
CGContextSetRGBStrokeColor(c, r, g, b, a)

如果您确实想自己进行分配,请使用您最喜欢的风格并像这样构造指针:

let p = UnsafeMutablePointer<CGFloat>(calloc(1, UInt(sizeof(CGFloat))))
// later don't forget to free(p)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 中分配/释放不安全指针? 的相关文章

随机推荐

  • 来自未预编译的 ASP.NET 网站的预编译相关错误

    我有一个 ASP NET 网站 已通过 XCOPIED 进行生产 我不使用 Visual Studio 发布此网站 我只是将所有 aspx 和代码隐藏页面复制到生产环境中 没有发布配置文件 我的生产服务器正在运行 IIS 7 5 集成管道
  • 如何更改 Android 中 Activity 的标题?

    我在用 Window w getWindow w setTitle My title 更改我当前活动的标题 但它似乎不起作用 谁能指导我如何改变这个 尝试单独使用 setTitle 如下所示 setTitle Hello StackOver
  • 将 OSGi 包分组以形成一致的“应用程序”的最佳方式是什么

    OSGi 方式 是开发包含离散的 连贯的功能块的单独的包 有时这些包包含实用程序类 有时它们依赖于实用程序类并设置自己的 OSGi 服务 另一方面 用户不太可能接触到捆绑包 他们更关心的是应用 一个执行任务或解决问题的软件 通常 应用程序将
  • 如何获取 LINQPad 中列出的 SQL Express 数据库的连接字符串?

    有没有一种简单的方法可以获取 LINQPad 连接窗口中列出的数据库的连接字符串 除了使用 Visual Studio 的对象资源管理器 Making sgmoore https stackoverflow com users 125759
  • 重新绘制留下的痕迹

    我知道这不是第一次问这个问题 但回答对我没有多大帮助 所以我正在帮助我终于得到答案 我制作了这个小游戏 让汽车绕着轨道行驶 必须使用矩形 当我使用repaint 方法代表汽车的矩形在新位置重新绘制 但留下一条痕迹 我有这个代码 import
  • 如何使用python在hadoop中保存文件

    问题 我开始学习hadoop 但是 我需要使用python将很多文件保存到其中 我似乎无法弄清楚我做错了什么 谁能帮我这个 下面是我的代码 我觉得HDFS PATH是正确的 因为我在安装时没有在设置中更改它 这pythonfile txt在
  • 什么是覆盖事务超时的注释?

    EE 新手 尝试重新配置 Weblogic 的默认超时 30 秒 而不必编写 weblogic ejb jar xml 文件 我现在只使用了注释 但我看到的唯一内容是在 DD 中
  • jQuery 从选定的下拉列表中获取 html id [重复]

    这个问题在这里已经有答案了 由于我的表单中有多个下拉菜单 我想从选定的下拉菜单之一检索 HTML id 我的更改下拉菜单有以下代码 select name product type change function 使用时console lo
  • Rplotly - 绘制分组线

    我正在从 ggplot2 迁移到plotly 以便利用它们提供的交互功能 我确实意识到plotly库有一个ggplotly函数 我可以用它来封装本机ggplot命令 但我想学习如何使用本机plotly命令绘制类似的图形 我的问题是我似乎无法
  • 自定义 RES 屏幕和 RES 图标已替换为默认的 Cordova 屏幕和图标

    我正在使用适用于 Apache Cordova 的 Visual Studio 工具 我已经测试了 CLI 6 4 0 不幸的是 RES 屏幕和 RES 图标存在错误 如果我使用 CLI 6 3 1 这个问题就会消失 为了演示它 我从头开始
  • 有没有可以阅读 ePub 书籍的 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试为 WP7 创建电子书阅读器 到目前为止 我还没有找到任何 API 来阅读 ePub 书籍 谢谢 扎因 对于基于 DRM fre
  • 列的数据被截断?

    更改 MySql 列的数据类型以存储后Twilio 通话 https www twilio com docs api rest call ids 34 个字符字符串 我尝试使用以下命令手动更改该列中的数据 update calls set
  • 如何在带有 View Holder 的自定义 ListView 中使用 Button OnClick

    我需要一些帮助 我正在使用视图保持器从动态数组适配器显示 我有列表视图 每行包含 标题 文本视图 副标题 TextView 进度条 下载按钮 按钮 我想在单击下载按钮时显示进度栏并隐藏下载按钮 单击第一行的下载按钮时 会显示第一个进度条 但
  • 如何在glmnet中指定日志链接?

    我正在使用 R 中的 glmnet 和 caret 包在广义线性模型上运行弹性网络 我的响应变量是成本 其中成本 gt 0 因此我想为我的 GLM 指定一个带有日志链接的高斯族 然而 glmnet 似乎不允许我指定 link log 如下
  • freeglut 与 glew 的区别?

    我最近开始学习 OpenGL gt 3 3 并且我注意到很多示例和教程都使用 freeglut 和 glew 但根本没有真正解释其中的区别 在谷歌搜索和阅读令人作呕的内容之后 我发现的最好的描述是这样的OpenGL相关工具包和API htt
  • 无法使用本地 hadoop 连接 azure blob 存储

    在尝试连接时本地hadoop与AZURE BLOB存储 即使用作为 HDFS 的 Blob 存储 和 Hadoop 版本 2 7 1 它抛出异常 这里我已经通过设置属性成功形成了本地集群
  • 我可以更新 INT 值 + 1 并返回新值吗?

    MySQL PHP 是否可以在一次查询中增加 INT 值并返回新值 sql mysql query UPDATE table SET number number 1 WHERE id uniqid updated number 或者我需要发
  • SQL Azure 和 Azure 表存储如何比较? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何检查 Ubuntu 上是否正在运行一个我不知道名称的服务

    我不知道该服务的名称 但想通过检查其状态来停止该服务 例如 如果我想检查是否PostgreSQL http en wikipedia org wiki PostgreSQL服务是否正在运行 但我不知道服务的名称 那么如何检查其状态 如果服务
  • 如何在 Swift 中分配/释放不安全指针?

    在 Beta 4 中 我的代码运行良好 var red green blue alpha UnsafePointer