objective-c - objc 结构数组到 swift 数组

标签 objective-c swift

-(CGPoint*)func
{
    CGPoint* result = calloc(2, sizeof(CGPoint));
    result[0] = ..;
    result[1] = ..;

    return result;
}

如何将这个数组转换为 swift [CGPoint]?

最佳答案

您可以使用 UnsafeBufferPointer如下所示

    let pointer: UnsafeMutablePointer<CGPoint> = yourInstance.func()

    let swiftArray = Array(UnsafeBufferPointer(start: pointer, count: 2))

    free(pointer)

编辑

如果您真的需要使用 C 数组,您可能需要将 func 方法重写为如下内容:

- (CGPoint*)pointArray:(NSInteger *)length
{
    int arrSize = 2;
    CGPoint* result = calloc(arrSize, sizeof(CGPoint));
    result[0] = ...
    result[1] = ...

    *length = arrSize;

    return result;
}

然后在 Swift 方面:

    var arrayLength: Int = 0
    let pointer: UnsafeMutablePointer<CGPoint> = yourInstance.pointArray(&arrayLength)

    let swiftArray = Array(UnsafeBufferPointer(start: pointer, count: arrayLength))

    free(pointer)

关于objective-c - objc 结构数组到 swift 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625929/

相关文章:

ios - 线程 1 : signal SIGABRT - multiple views

iOS 更改 BackgroundImage

swift, alamofire 取消之前的请求

swift - GKState : Why is self. 状态机 == nil?

objective-c - 如何 : Is NSWindow In FullScreen Mode (Lion) AND Enabling/Disabling?

ios - 按下按钮时 UIViewcontroller 不打开

swift - 计算一个特殊字符(非间距标记)在 Swift 中的字符串中出现的次数

c - 如何使用 Xcode 编译 C 程序,以便在沙箱中使用二进制文件?

iOS 7.1 默认色调颜色不会为 UISwitch 更改

ios - Swift - 如何编写一个按钮以转到 mainScene,而不会返回 segues?