如何在iOS中接收和存储来自服务器的二进制数据?

我正在为iPhone(iOS 5)的应用程序工作。 我必须做的是通过使用我从服务器获得的二进制数据创build一个地图。 如果服务器有可用字节,我将它们读入一个缓冲区:uint8_t [1024]。 然后我parsing这些数据,并从中创build对象(例如包含经度和纬度点的path),但这些对象通常比我的缓冲区大。 在模拟器上,这不是一个大问题,因为我有足够的内存将它们存储到可变数组中。

但是,我该如何处理这个问题,以使我的应用程序安全的设备? 我应该使用什么arrays大小的iOS设备?

我希望我的问题是可以理解的。

您可以使用NSMutableArray并临时存储数据,并根据需要扩展其大小。

希望这可以帮助。

你有没有考虑使用NSData (或其可变的子类NSMutableData )呢?

这些为字节缓冲区提供了一个对象封装,并且可以使用appendData: selector随意生长。

从文档 :

NSMutableData (及其超类NSData )为字节缓冲区提供数据对象,面向对象的包装器。 数据对象让简单分配的缓冲区(也就是没有embedded式指针的数据)承担基础对象的行为。

也就是说,如果你只是按照千字节的顺序进行分配,那么你不可能面对内存问题。