2012-03-12 47 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

相关问题