我有一個純粹的c代碼和由ObjC編譯器處理的c代碼的項目[.m file
]。一個由ObjC編譯器處理具有下面的類:將字符數組從ObjC傳遞到C
unsigned long getMessage(char ** message) {
*message = (char*)calloc(1, [dMessage bytes], [dMessage length]);
memcpy(message, [dMessage bytes], [dMessage length])
return [dMessage length];
}
dMessage
是填充有文本的NSData
對象。
在C面,我做的:
char* msg = NULL
unsigned long length = getMessage(&msg)
通話結束後,msg
是空的,但長度變量設置爲正確的大小。
我該怎麼做才能在objc和c之間通過char*
?
謝謝
什麼是'getMessage'真的這樣做?數據已經分配在'NSData'對象中,所以只需保留它並通過'[dMessage bytes]'訪問原始字節。 – trojanfoe
這是一個用C語言編寫的函數,用於訪問存儲在數據庫中的一些數據,這些數據用於訪問我們的ObjC庫和代碼。我必須將它傳遞給使用純C編寫的庫,我不想更改該庫,希望儘可能保持原始。 – Krystian