cocoa - NSData 适合大型 c 数组吗?

标签 cocoa nsdata

我正在使用 CFITSIO 库读取大型 FITS 图像。首先,不会读入实际图像/像素。仅当需要执行某种操作时(例如,几张图像的平均值)是作为 double 组加载到内存中的图像。我将每个图像表示为 ImageListing 类型的对象(自定义类)。这个类知道如何读/写适合的文件。

为了表示一系列图像,我在另一个名为 ImageStacker 的类中使用 NSMutableArray。 ImageStacker 实现了对图像进行平均、相减、求和的方法。显然,要执行这些操作,此类需要访问原始像素,这是通过发送消息 returnPixelsFrom:(NSInteger)Row 获取的。

我的问题是,我应该:

1) 在上述方法中读入像素,但将它们读入通过引用传递的 C 数组(double 类型)中。

或者

2) 我是否应该将像素读入本地 C 数组,然后使用 dataWithBytes:length 组合 NSData 对象并从方法返回该对象。

选项 2 相对于 1 有什么优势?请记住,在对像素进行平均/相加时,无论如何我都必须使用 C 数组,因此为此目的继续使用纯 C 数组不是更好吗?

最佳答案

我认为您想要使用 NSData 的唯一原因是您需要将这些位交给像 NSDictionary 这样的 Cocoa 类,而该类不知道如何处理纯 C 数组,或者想要使用 Cocoa 来归档或序列化数据。

如果您要生成(或加载)位并在自定义例程中对它们进行所有工作,我建议将其保留为最适合您的格式,特别是如果您只是要将数据粘贴到NSData 然后将它们拉出来。但是,关于 NSData 可能有一些我不知道的事情,这会对您有利。

关于cocoa - NSData 适合大型 c 数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547576/

相关文章:

objective-c - 使用文本字段设置变量的值

ios - 如何在调试我的应用程序时跳过内存读取?

swift - IBDesignable 类绘图 UIImage 未在 Storyboard 中显示

objective-c - 如何以字节为单位获取图像的确切大小?

objective-c - 如何复制当前事件的浏览器 URL?

swift - 使用 AVAudioPlayer 播放从 HTTP POST 请求接收到的 NSData

使用字符串输入进行 swift aes 128 解密

UIImage 上的 Iphone 加密 - AES 256 加密时出现 kCCBufferTooSmall 错误

ios - 'NSData dataWithContentsOfURL :' memory leak iOS 9. x?

iphone - Objective-C 2.0中的多线程问题