当前位置: 首页 > 面试题库 >

Swift 5.0:不推荐使用'withUnsafeBytes':使用`withUnsafeBytes(...)

谢墨竹
2023-03-14
问题内容

我以前在Swift 4.2中使用以下代码来生成ID:

public static func generateId() throws -> UInt32 {
    let data: Data = try random(bytes: 4)
    let value: UInt32 = data.withUnsafeBytes { $0.pointee } // deprecated warning!
    return value // + some other stuff 
}

withUnsafeBytes在Swift 5.0上已弃用。我该如何解决?


问题答案:

在Swift
5中,使用(untyped)调用闭包的withUnsafeBytes()方法,您可以从原始内存中获取值:Data``UnsafeRawBufferPointerload()

let value = data.withUnsafeBytes { $0.load(as: UInt32.self) }

(在Swift论坛中比较如何以明确定义的方式使用Data.withUnsafeBytes?)。请注意,这要求内存在4字节边界上_对齐_

另请注意,从Swift 4.2开始,您可以使用新RandomAPI轻松创建一个随机的32位整数:

let randomId = UInt32.random(in: .min ... .max)


 类似资料:
  • 问题内容: 我收到此警告,但是该程序仍然可以正常运行。 MySQL代码向我显示了一条PHP消息: 不推荐使用:mysql_connect():不推荐使用mysql扩展,以后将被删除:在第2行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php中使用mysqli或PDO代替 我的页面是 这是什么意思,我该如何消除该消息? 问题答案: 有

  • 问题内容: 我正在尝试使用和进行单元测试。 当我不包含注释时,测试将失败。但 不推荐使用MockitoJUnitRunner类型 我正在使用Mockito 2.6.9。我应该怎么做? 问题答案: 现在确实已弃用,应该改为使用。如您所见,仅软件包名称已更改,该类的简单名称仍为 。 摘录自javadoc : 移至,该课程将在Mockito 3中删除

  • 新的侦听器(又名OnCameraMoveListener())方法onCameraMove()没有CameraPosition CameraPosition输入变量,所以我很迷惑:有没有方法回收我的旧代码? 这里有一些参考资料。

  • 我收到这个警告,但程序仍然正常运行。 MySQL代码用PHP向我显示了一条消息: 不推荐使用:mysql_connect():不推荐使用mysql扩展,以后将删除该扩展:在C:\xampp\htdocs\task\media\new\connect.inc.php第2行使用mysqli或PDO 我的页是 这意味着什么,我如何消除消息?

  • 我收到此错误,并且尝试将更改为仍然收到不同的错误。

  • 问题内容: 我尝试学习Spring。我正在追踪这个网站http://www.roseindia.net/spring/spring3/spring-3-hello- world.shtml 我尝试了一个例子。我正在使用类似下面的内容,但是在这里显示: XmlBeanFactory类型已弃用 我必须用什么替代呢? 问题答案: ApplicationContext是BeanFactory的子接口。您可