2016-11-15 69 views
1

獲取UnsafeBufferPointer在我ObjC - 斯威夫特橋接我目前使用從ObjC

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

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

在斯威夫特創建一個數組一樣

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

是否可以直接從ObjC得到這個像

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

+1

C指針不包含有關指向內存區域大小的任何信息,因此您必須始終傳遞指針和計數。 –

+0

@MartinR我很害怕。 ObjC在這種情況下比Obj更C :-(讓它成爲答案... –

+0

完成 - 但也許我忽略了某些事情,並且有人帶着更好的想法來... –

回答

2

C指針不包含指向的內存區域的大小的任何信息,所以你總是要通過這兩個指針和計數從(Objective-)C斯威夫特 。你可以通過struct包含 指針和計數來保存函數調用。