我是Objective-C/Objective-C 的新手,我正在為一個C 庫撰寫一個包裝。
其中一個函式需要一個指向指標的參考和一個指向int的參考來創建一個緩沖區并回傳其大小,其方式如下:
int GetData(char*& pcBuffer, int& iBufferSize)。
我真的不清楚如何通過Objective-C/C 與之對接
到現在為止,我一直在寫這樣的呼叫-(int) GetData: (NSString*) pcData
: (int) iBufferSize;
然而,由于pcBuffer所參考的指標將由庫代碼創建和填充,我應該使用什么作為資料型別?
此外,由于int是作為參考而不是作為指標傳遞的,我應該如何正確地宣告它?
對此有什么幫助嗎?
uj5u.com熱心網友回復:
C 函式可能分配了字串緩沖區并在第一個引數中回傳,同時在第二個引數中回傳分配的緩沖區的大小。
你不需要在 Objective-C 方面模仿相同的介面,因為你可以使用回傳的緩沖區來實體化一個NSString。剩下的就是處理函式的回傳值了,我想這是一個錯誤代碼,以防出錯:
- (nullable NSString *)getDataWithError:(NSError **) error {
char *buffer;
int size。
int errCode = GetData(buffer,size)。
if (errCode == 0) {
return [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding] 。
} else {
if (錯誤) {
*error = [NSError errorWithDomain:MyErrorDomain code: errCode userInfo:nil]。
}
return nil;
}
作為獎勵,由于有了錯誤報告機制,上述函式可以很好地從swift中呼叫:
let value = try MyObject() .getData()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307442.html
標籤:
