【问题标题】:Load file to NSData with C使用 C 将文件加载到 NSData
【发布时间】:2012-03-28 13:58:27
【问题描述】:

问题是将图像文件加载到 UIImage。 原始文件在文件系统中兑现并由 C-library 管理(关于它的问题)。

使用 Objective-C 我可以这样做:

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

但是如何使用 C 将文件数据加载到 Objective-C 中呢?

使用 C 我可以像这样打开文件:

ret = fopen( name, options);

但是我可以使用 ret ptr 来初始化 NSData:

[NSData dataWithBytesNoCopy:ret length:length_of_ret];?

非常感谢您的帮助!

【问题讨论】:

    标签: objective-c c-libraries


    【解决方案1】:

    使用fread从文件中读取字节。

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

    【讨论】:

    • 什么是“字节”? ret文件的大小?你是什​​么意思“检查返回值,以防读取很短!”?数据会被 NSData dealloc 释放,还是我必须自己释放?
    • bytes 是以字节为单位的文件大小。 NSData dealloc 将起作用。 NSData 将拥有数据的所有权。
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2012-03-17
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多