我正在使用C的CFITSIO库读取大型FITS图像。首先,不读取实际图像/像素。仅在需要进行某种操作时(例如,平均几张图像)是将图像作为双数组加载到内存中。我将每个图像表示为ImageListing(自定义类)类型的对象。这个类知道如何读/写拟合文件。
为了表示一系列图像,我在另一个名为ImageStacker的类中使用NSMutableArray。 ImageStacker实现了可以对图像进行平均,减法和求和的方法。显然,要执行这些操作,此类需要访问原始像素,通过发送消息returnPixelsFrom:(NSInteger)Row
来获取原始像素。
我的问题是,我应该:
1)读入上述方法中的像素,但将它们读入一个通过引用传递的C数组(double类型)。
OR
2)我应该将像素读入本地C数组,然后使用dataWithBytes:length
编写NSData对象并从该方法返回此对象。
选项2有多大优势?请记住,在平均/添加像素时,我将不得不使用C数组,所以为此目的继续使用纯C数组不是更好吗?
答案 0 :(得分:1)
我认为你想要使用NSData
的唯一原因是你需要将这些位交给像NSDictionary
那样不知道如何处理普通C的Cocoa类数组,或者想使用Cocoa来存档或序列化数据。
如果您正在生成(或加载)这些位并在自定义例程中对它们进行所有工作,我会说保留最适合您的格式,特别是如果您要将数据粘贴到NSData
然后将它们拉回来。但是,我可能不知道NSData
会对您有利。