Swift 4.1 deinitialize 和 deallocate(capacity:) 已弃用

2024-04-30

我一直这样说来形成 CGPoint 的 C 数组:

let arr = UnsafeMutablePointer<CGPoint>.allocate(capacity:4)
defer {
    arr.deinitialize()
    arr.deallocate(capacity:4)
}
arr[0] = CGPoint(x:0,y:0)
arr[1] = CGPoint(x:50,y:50)
arr[2] = CGPoint(x:50,y:50)
arr[3] = CGPoint(x:0,y:100)

现在(Xcode 9.3 beta 中的 Swift 4.1)deinitialize and deallocate(capacity:)已弃用。看来我现在应该说的是:

defer {
    arr.deinitialize(count:4)
    arr.deallocate()
}

是对的吗?


是的,这是一部分SE-0184 不安全[可变][原始][缓冲区]指针:添加缺少的方法,调整现有标签以确保清晰度,并删除释放大小 https://github.com/apple/swift-evolution/blob/master/proposals/0184-unsafe-pointers-add-missing.md, 已在 Swift 4.1 中实现。

尤其:

从 deallocate(capacity:) 中删除容量将结束对 deallocate() 功能的混淆,很明显,deallocate() 将自行释放整个内存块,就像在其上调用 free() 一样。

旧的 deallocate(capacity:) 方法应标记为已弃用并最终删除,因为它目前鼓励危险的错误代码。

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

Swift 4.1 deinitialize 和 deallocate(capacity:) 已弃用 的相关文章

随机推荐

  • PHP Guzzle 具有基本身份验证和不记名令牌

    我正在尝试与 infojobs api 建立连接 文档解释了如何以这种方式进行连接 获取 api 1 应用程序 HTTP 1 1主办 api infojobs net 授权 基本QWxhZGRpbjpvcGVuIHNlc2FtZQ 承载07
  • 检查 Javascript 中的 URL 是否损坏

    这个问题之前已经发布在 Stack 上 但没有一个具体到我想要理解的内容 检查 URL 是否正确的最简单方法是发送 http Head 请求 但是如何使用它来指定 URL 呢 我在之前的帖子中发现了这一点 function UrlExist
  • Objective-C 中的非正式协议?

    我想知道是否有人可以解释一下 Objective C 中的非正式协议是什么 我尝试在苹果文档和其他一些书籍上理解它 但我的头仍然在旋转 所以如果有人可以用例子解释 我将非常感激 Thanks An 非正式协议正如乔纳森所说 通常是在 NSO
  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • stdClass 到数组?

    i have stdClass Object 0 gt stdClass Object one gt aaa two gt sss 1 gt stdClass Object one gt ddd two gt fff 2 gt stdCla
  • 如何从 TextInputLayout 中删除底部填充

    第一张图就是我想要的 第二张图是我实现的 正如您所看到的 TextInputLayout 的底部有一个填充 这使得灰色背景溢出超过 edittext 行 请不要建议负边距或填充 因为它在较新的 API 中不起作用 这是我为第一个文本输入布局
  • 插入排序 C#

    你们能帮我完成 C 中的基本插入排序吗 我有一个数组中的姓名和居住城市列表 需要通过比较居住城市来对该数组进行排序 列表必须按字母顺序排序 比较器已经设置完毕并可以工作 我只是对插入排序器编程有点迷失 因为这是我们第一次使用这种排序方法 到
  • Dart:当两个或多个任务等待同一个 Future 时会发生什么

    在 Dart 中 当两个或多个任务等待同一个 Future 时 当 Future 完成时 任务是否按照执行等待的顺序获得通知 运行 即第一个执行等待的任务是第一个运行的 这段代码保证输出2 int res 0 Future
  • ARKit - 如何在另一个 SCNNode 中包含 SCNText(语音气泡)

    我正在尝试在 ARKit 的语音气泡中创建一个带有简单文本的报价生成器 我可以用文本显示语音气泡 但文本始终从中间开始并溢出到语音气泡之外 任何帮助使其在语音气泡的左上角对齐并包裹在语音气泡内的帮助将不胜感激 Result Classes
  • 为什么 C# 在基本构造函数之前设置私有变量,而 VB.NET 却相反?

    有一个问题是比较 C 代码和 VB NET 看似相同的代码之间的结果完全不同 我写了一个程序 允许两个类 打架 无论出于何种原因 C 总是获胜 VB NET 有什么问题 https stackoverflow com questions 7
  • 从 Android 联系人中检索名字和姓氏结果为“1”和“null”

    我使用下面的代码从 android 联系人中检索名字和姓氏 DISPLAY NAME 返回联系人的姓名 而名字和姓氏分别返回 1 和 null 以下是代码 ContentResolver cr getContentResolver Curs
  • 如何在网页中进行字体抗锯齿?

    我一直在研究如何在网页上执行字体抗锯齿 以下是我找到的一些解决方案 webkit font smoothing属性 它似乎只适用于最新的浏览器 我没有尝试过 Google Font API 这很棒 而且易于使用 我想知道如何离线使用它 一个
  • PHP 中的冒泡排序实现? [复制]

    这个问题在这里已经有答案了 我需要用 PHP 做一个冒泡排序算法 我想知道是否有人有我可以使用的好例子 或者一个可以做到这一点的开源库 我在一个集合 数组 中有几个空格 我想用对象 一个人 填充这些空间 所以没有空间可以有男性和女性 这就是
  • 计算 scikit-learn 逻辑回归模型的残差偏差

    有没有办法计算残差scikit learn 逻辑回归模型 http scikit learn org stable modules generated sklearn linear model LogisticRegression html
  • np.sqrt 对于非常大的整数的奇怪行为

    gt gt gt np version 1 7 0 gt gt gt np sqrt 10000000000000000000 3162277660 1683793 gt gt gt np sqrt 10000000000000000000
  • 如何模拟 Stripe 订阅续订失败? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试测试不同的 Stripe 订阅失败 具体来说 当卡最初被接受且订阅处于活动状态时 有效订阅被续订 但续订付款被拒绝 或者客户在订阅期间
  • 不接受 TableAdapter 中的参数

    我目前正在尝试设置我的 TableAdapters 但它不允许我使用参数 这使得它毫无用处 当我创建新查询时 SELECT users FROM users WHERE name LIKE name 它告诉我附近有一个 SQL 错误 我使用
  • Moq中的设置方法,模棱两可的调用

    我正在尝试使用 Moq 来模拟界面 public interface IMatchSetupRepository IEnumerable
  • 将 json 对象数组插入 postgres 的查询

    我有一张带字段的表fields json 我创建了一个函数来将记录插入到该表中 这是调用 select from add name Yes value yes name No value no name Neutral value neut
  • Swift 4.1 deinitialize 和 deallocate(capacity:) 已弃用

    我一直这样说来形成 CGPoint 的 C 数组 let arr UnsafeMutablePointer