将 Objective C 数组声明转换为 Swift

Converting an Objective C array declaration to Swift

我如何将这个 Obj-C 翻译成 Swift?我不确定新的 Swift 2 语法和所有语法。

unsigned char pixel[4] = {0};

你可以这样做:

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

或:

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

Swift 相当于 unsigned char 是 CUnsignedChar

var pixel : [CUnsignedChar]()

您不能在 swift 中的 CMutablePointers 中给出固定长度的数组。所以你必须这样声明。 Reference

看到这个link解决这个问题

根据评论,关于 Objective-C 代码的含义似乎还有一个问题:unsigned char pixel[4]pixel 声明为 4 [=14 的数组=]的。 = {0} 初始化 数组的所有元素为 0.

因此 Swift 中最简单的概念等价物是:

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

与 C 和 Objective-C 不同,Swift 不允许提前指定数组的大小,因此必须给出所有四个零以获得正确的长度 - 在 C 和 [=35 中=] 为简洁起见,可以省略额外的零,因为已知数组的大小为 4.

可以说你可以使用 CUnsignedChar 而不是 UInt8(因为 C 中的 unsigned char 不能严格保证是 UInt8),但这是不必要的,除非你将把这些值传递给期望 unsigned char 的 C 函数。在任何情况下,它们极有可能是同一类型,并且在它们不是同一类型的奇怪平台上,C 代码更有可能实际上是错误的,并且在它们意味着 [=24] 的地方使用了 unsigned char =].