gpt4 book ai didi

ios - Objective-C 中的参数类型 (void *) 如何转换为 Swift 中的 UnsafePointer<()>?

转载 作者:可可西里 更新时间:2023-11-01 00:53:31 25 4
gpt4 key购买 nike

这是我需要转换为 Swift 的 Objective-C 函数示例

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;

经过多次谷歌搜索后,我终于找到了可以将 (void *) 转换为有效 Swift 类型的答案。这种类型显然表示为 UnsafePointer<()>。

你知道为什么 (void*) 在 Swift 中转换为 UnsafePointer<()> 吗?

<()> 调用的语法是什么,它是什么意思?

最佳答案

<...>是一个通用说明符。它解析其名称所附加的通用类型的通用占位符。

例如,Array 是一个泛型,其中占位符是它的元素类型。所以Array<String>是一个数组的类型,其通用占位符被指定为字符串 - 意思是,一个数组,其元素是字符串。你可能会说 [String] ,但是 Array<String>同样有效。

同样,UnsafePointer 是一个泛型,其中占位符是它指向的事物的类型。所以UnsafePointer<Float>是指向 Float 的不安全指针——它可能是 C float 数组中的第一个 float 。 (这实际上出现在现实生活中的 Swift 编程中。)

()是一个空元组类型,也称为Void .例如,一个不返回任何值的函数返回 () (或 Void )。

因此,将所有内容放在一起,UnsafePointer<()> (或 UnsafePointer<Void> )是一个不安全的指向 void 的指针——天哪,这正是 void* 的意思是。

关于ios - Objective-C 中的参数类型 (void *) 如何转换为 Swift 中的 UnsafePointer<()>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27693922/

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