gpt4 book ai didi

ios - 类型 'MTLBuffer' 的值没有成员 'didModifyRange'

转载 作者:搜寻专家 更新时间:2023-10-31 19:36:25 24 4
gpt4 key购买 nike

我很困惑,因为我在 Swift 4 中创建了一个 MTLBuffer,但我无法使用 didModifyRange 方法。

有趣的是,我仍然可以在 Apple 文档中找到它,并且还没有听说过它被更改了。

为什么会发生错误 Value of type 'MTLBuffer' has no member 'didModifyRange'

以下代码将在最新版本的 XCode 中产生此错误

let device = MTLCreateSystemDefaultDevice()
var buffer = device?.makeBuffer(length: 3, options: [])
let range = Range<Int>(NSRange())
buffer.didModifyRange(range)

最佳答案

根据 documentation ,方法的签名如下所示:

func didModifyRange(_ range: Range<Int>)

你通过了NSRange这明显不同于 Swift Range<Int> .所以要让它工作,只需传递适当的范围对象。

附言Range<Int>min...max 定义方案(例如 0...100 )。

编辑:

一些 Metal框架签名仅适用于 macOS 11.1,包括 didModifyRange: ,所以如果你尝试在 iOS 上调用它,即使有 import Metal在标题中,会给你那个错误。

所以下面的代码可以在macOS 11.1下编译

import Metal
// ...

guard
let device = MTLCreateSystemDefaultDevice(),
let buffer = device.makeBuffer(length: 3, options: [])
else {
return
}

buffer.didModifyRange(Range<Int>(1...10))

...在 iOS 下不会。

关于ios - 类型 'MTLBuffer' 的值没有成员 'didModifyRange',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918757/

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