2012-03-12 87 views
2

問題是將圖像文件加載到UIImage。 原始文件兌現在文件系統中,並由C庫(關於它的問題)管理。使用C將文件加載到NSData

客觀-C我可以這樣做:

NSData *file = [NSData dataWithContentsOfFile:...]; 
[UIImage imageWithData:file]; 

但怎麼可能文件數據加載到目標-C使用C?

用C,我可以打開這個文件,如:

ret = fopen(name, options); 

但我可以用RET PTR到NSData的初始化:

[NSData dataWithBytesNoCopy:ret length:length_of_ret];? 

非常感謝您的幫助!

回答

3

使用fread從文件中讀取字節。

FILE * ret = fopen(name, options); 
void *data = malloc(bytes); 
fread(data, 1, bytes, ret); 
fclose(ret); 
NSData *data = [NSData dataWithBytesNoCopy:data length:bytes]; 
+0

什麼是「字節」? ret文件的大小?你是什​​麼意思「檢查返回值,如果閱讀很短!」?並將數據釋放與NSData dealloc,或者我必須自己釋放它? – 2012-03-12 08:30:03

+1

字節是文件的大小,以字節爲單位。 NSData dealloc將工作。 NSData將獲取數據的所有權。 – 2012-03-12 09:13:20

相關問題