将Objective C数组声明转换为Swift

im9ewurl  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(163)

我该如何将Obj-C翻译成Swift呢?我对Swift 2的新语法不太确定。
unsigned char pixel[4] = {0};

r8uurelv

r8uurelv1#

根据评论,似乎还有一个关于Objective-C代码含义的附加问题:unsigned char pixel[4]pixel声明为4unsigned char的数组。= {0}将数组的所有元素 * 初始化 * 为0
因此,Swift中最简单的概念等价物是:

var pixel: [UInt8] = [0,0,0,0]

与C和Objective-C不同,Swift不允许预先指定数组的大小,因此必须给出所有四个零来获得正确的长度--在C和Objective-C中,多余的零可以省略,因为已经知道数组的大小是4
你可以用CUnsignedChar代替UInt8(因为C中的unsigned char并不能严格保证一定是UInt8),但除非你要把值传递给一个期望unsigned char的C函数,否则它是不必要的。在任何情况下,它们极有可能是同一类型的,而在类型不同的平台上,更有可能的情况是C代码实际上是错误的,使用的是unsigned char,而实际上是uint8_t

kmb7vmvb

kmb7vmvb2#

您可以这样做:

var pixel = [UInt8](count:4, repeatedValue:0)

或者:

var pixel:[UInt8] = [0,0,0,0]
h7appiyu

h7appiyu3#

无 符号 字符 的 Swift 等效 值 为 CUnsignedChar

var pixel : [CUnsignedChar]()

中 的 每 一 个
你 不能 在 swift 的 CMutablePointers 中 给出 固定 长度 的 数组 。 所以 你 必须 像 这样 声明 。 Reference
请 参阅 此 link 以 解决 此 问题

相关问题