【问题标题】:Getting UnsafeBufferPointer from ObjC从 ObjC 获取 UnsafeBufferPointer
【发布时间】:2016-11-15 13:13:20
【问题描述】:

在我目前使用的 ObjC-Swift 桥接中

- (double*)vector {
  return (double*)self.ndArray->vector();
}

- (long) size {
  return self.ndArray->size();
}

像在 Swift 中创建一个数组

let p = vector.vector()
let s = vector.size()
let a = Array<Double>(UnsafeBufferPointer(start: p, count: s))

是否可以直接从 ObjC 中获取此内容

let a = Array<Double>(vector.readyPackedPointer())

?

【问题讨论】:

  • C 指针不包含有关指向内存区域大小的任何信息,因此您始终必须同时传递指针和计数。
  • @MartinR 我很担心。在这种情况下,ObjC 比 Obj 更 C :-( 让它成为一个答案...
  • 完成。 - 但也许我忽略了一些东西,有人提出了一个更好的主意......

标签: objective-c swift pointers


【解决方案1】:

C 指针不包含有关指向内存区域大小的任何信息,因此您始终必须同时传递指针和计数 从 (Objective-)C 到 Swift。你可以传递一个包含两者的struct 保存函数调用的指针和计数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多