如何将 objective-C float * 转换为 Swift?
How to convert objective-C float * to Swift?
我要转换 objective-C
float *bitmap = [self createRGBABitmapFromImage:image.CGImage];
int bitmapOffset = 0;
&bitmap[bitmapOffset]
float * 是 swift 中的 UnsafeMutablePointer
但是 UnsafeMutablePointer 不是数组。
所以我不能使用 bitmapOffset。
&bitmap[bitmapOffset] 这个类型是 UnsafePointer
So I can't use bitmapOffset
是的,你可以。 UnsafeMutablePointer 是可订阅的,就像 C 中的指针/数组一样。
我会证明的。这是类似于您的 C 代码的东西 — return 是 float*
:
的函数
float arr[] = {(float)1.1, (float)2.1, (float)3.1};
float* doSomething() {
return arr;
}
正如您所说的那样,doSomething
在 Swift 中被视为 return 一个 UnsafeMutablePointer。让我们检索它 - 并为其添加下标!
let floats = doSomething()
let oneFloat = floats[0]
let anotherFloat = floats[1]
print(oneFloat) // 1.1
print(anotherFloat) // 2.1
(但是,如果您要翻译所有代码,也许您的方法实际上应该 return 一个数组;我不知道,因为您没有显示它。)
我要转换 objective-C
float *bitmap = [self createRGBABitmapFromImage:image.CGImage];
int bitmapOffset = 0;
&bitmap[bitmapOffset]
float * 是 swift 中的 UnsafeMutablePointer 但是 UnsafeMutablePointer 不是数组。
所以我不能使用 bitmapOffset。
&bitmap[bitmapOffset] 这个类型是 UnsafePointer
So I can't use bitmapOffset
是的,你可以。 UnsafeMutablePointer 是可订阅的,就像 C 中的指针/数组一样。
我会证明的。这是类似于您的 C 代码的东西 — return 是 float*
:
float arr[] = {(float)1.1, (float)2.1, (float)3.1};
float* doSomething() {
return arr;
}
正如您所说的那样,doSomething
在 Swift 中被视为 return 一个 UnsafeMutablePointer。让我们检索它 - 并为其添加下标!
let floats = doSomething()
let oneFloat = floats[0]
let anotherFloat = floats[1]
print(oneFloat) // 1.1
print(anotherFloat) // 2.1
(但是,如果您要翻译所有代码,也许您的方法实际上应该 return 一个数组;我不知道,因为您没有显示它。)