我该如何将Obj-C翻译成Swift呢?我对Swift 2的新语法不太确定。unsigned char pixel[4] = {0};
unsigned char pixel[4] = {0};
r8uurelv1#
根据评论,似乎还有一个关于Objective-C代码含义的附加问题:unsigned char pixel[4]将pixel声明为4unsigned char的数组。= {0}将数组的所有元素 * 初始化 * 为0。因此,Swift中最简单的概念等价物是:
unsigned char pixel[4]
pixel
4
unsigned char
= {0}
0
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。
CUnsignedChar
UInt8
uint8_t
kmb7vmvb2#
您可以这样做:
var pixel = [UInt8](count:4, repeatedValue:0)
或者:
var pixel:[UInt8] = [0,0,0,0]
h7appiyu3#
无 符号 字符 的 Swift 等效 值 为 CUnsignedChar
var pixel : [CUnsignedChar]()
中 的 每 一 个你 不能 在 swift 的 CMutablePointers 中 给出 固定 长度 的 数组 。 所以 你 必须 像 这样 声明 。 Reference请 参阅 此 link 以 解决 此 问题
3条答案
按热度按时间r8uurelv1#
根据评论,似乎还有一个关于Objective-C代码含义的附加问题:
unsigned char pixel[4]
将pixel
声明为4
unsigned char
的数组。= {0}
将数组的所有元素 * 初始化 * 为0
。因此,Swift中最简单的概念等价物是:
与C和Objective-C不同,Swift不允许预先指定数组的大小,因此必须给出所有四个零来获得正确的长度--在C和Objective-C中,多余的零可以省略,因为已经知道数组的大小是
4
。你可以用
CUnsignedChar
代替UInt8
(因为C中的unsigned char
并不能严格保证一定是UInt8
),但除非你要把值传递给一个期望unsigned char
的C函数,否则它是不必要的。在任何情况下,它们极有可能是同一类型的,而在类型不同的平台上,更有可能的情况是C代码实际上是错误的,使用的是unsigned char
,而实际上是uint8_t
。kmb7vmvb2#
您可以这样做:
或者:
h7appiyu3#
无 符号 字符 的 Swift 等效 值 为 CUnsignedChar
中 的 每 一 个
你 不能 在 swift 的 CMutablePointers 中 给出 固定 长度 的 数组 。 所以 你 必须 像 这样 声明 。 Reference
请 参阅 此 link 以 解决 此 问题