gpt4 book ai didi

swift - 确定数据实例是否连续

转载 作者:行者123 更新时间:2023-11-28 09:35:03 25 4
gpt4 key购买 nike

设 d 是 Data 的一个实例。在 Swift 的早期版本中,我可以使用如下代码测试它在内存中是否连续

d.enumerateBytes{(pBuf: UnsafeBufferPointer<UInt8>, idx: Data.Index, flag: inout Bool) -> Void in
if (pBuf.count == d.count) { print("Data is contiguous!") }
}

但是,在 Swift 5 中 enumerateBytes()已弃用,我收到如下警告:

warning: 'enumerateBytes' is deprecated: use `regions` or `for-in` instead

我很想做这样的事

if d.regions.count == 1 { print("Contiguous!!!") }

regions类型为 CollectionOfOne<Data> ,根据定义,它始终包含一个元素。

有什么建议吗?

最佳答案

从 Swift 5 开始,所有 Data 值都有连续存储,类型符合新的 ContiguousBytes协议(protocol)(在 #20225 中实现)。作为@matt points out , 这个变化是 highlighted in a recent WWDC talk :

So from Swift 5 and onwards, we promise that struct Data is a contiguous buffer type.

关于swift - 确定数据实例是否连续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58229364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com