将 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
=].
我如何将这个 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
=].