Как получать и хранить двоичные данные с сервера в iOS?
Я работаю над приложением для iPhone (iOS 5). Что мне нужно сделать, так это создать карту, используя двоичные данные, которые я получаю с сервера. Если на сервере есть доступные байты, я считываю их в буфер: uint8_t[1024]. Затем я анализирую эти данные и создаю из них объекты (например, путь, содержащий точки с долготой и широтой), но эти объекты часто больше моего буфера. На симуляторе это не большая проблема, потому что у меня достаточно памяти, чтобы хранить их в изменяемых массивах.
Но как мне справиться с этим, чтобы сделать мое приложение безопасным для устройства? Какой размер массива я должен использовать для устройств iOS?
Я надеюсь, что моя проблема была понятна.
2 ответа
Ты можешь использовать NSMutableArray
and store data temporarily and expand its size as needed.
Надеюсь это поможет.
Рассматривали ли вы использование NSData
(or its mutable subclass NSMutableData
) вместо?
These provide an object wrapper for byte buffers, and can be grown arbitrarily using the appendData:
селектор.
Из документации:
NSMutableData
(and its superclassNSData
) provide data objects, object-oriented wrappers for byte buffers. Объекты данных позволяют простым выделенным буферам (то есть данным без встроенных указателей) принимать поведение объектов Foundation.
That said, if you're only allocating on the order of kilobytes you're not likely to face memory issues.