Это большая проблема. До сих пор я решил использовать некоторые временные буферы фиксированного размера и отделить поток для каждого буфера, когда он заполнен. Поток сохранит содержимое буфера во флэш-памяти. Запуск некоторых тяжелых потоков, так как каждый поток обращается к вспышке, замедлит работу устройства и обновит изображение с камеры.
Буферы не могут быть большими, потому что вы получите предупреждение о памяти, и не могут быть маленькими, потому что вы замораживаете устройство из-за слишком большого количества потоков и обращений к флэш-памяти одновременно.
Решение заключается в балансирующем размере буфера и количестве потоков.
Я еще не пытался использовать sqlite3 db для хранения двоичных данных изображений, но я не буду, если это будет лучшим решением.
PS: чтобы ускорить вызов методов класса, избегайте общего решения [метода объекта] из-за того, как работает метод, но попытайтесь получить и сохранить адрес метода, как показано ниже.
От Apple ObjC doc:
"В приведенном ниже примере показано, как может выглядеть процедура, реализующая метод setFilled:
называется:
void (*setter)(id, SEL, BOOL);
int i;
setter = (void (*)(id, SEL, BOOL))[target methodForSelector:@selector(setFilled:)];
for ( i = 0; i < 1000, i++ )
setter(targetList[i], @selector(setFilled:), YES); "
Marco