Чтобы сохранить изображения из UIGetScreenImage () в NSMutable Array - PullRequest
0 голосов
/ 30 марта 2010

Я получаю изображения из UIGetScreenImage () и сохраняю их непосредственно в изменяемый массив, например: -

image = [UIImage imageWithScreenContents];
[array addObject:image];
[image release];

Я установил этот код в таймере, поэтому я не могу использовать UIImagePNGRepresentation () для хранения как NSData, так как это снижает производительность. Я хочу использовать этот массив непосредственно через некоторое время, т.е. после захвата 1000 изображений за 100 секунд. Когда я использую код ниже: -

UIImage *im = [[UIImage alloc] init];
im = [array objectAtIndex:i];
UIImageWriteToSavedPhotosAlbum(im, nil, nil, nil);**

приложение вылетает. И я не хочу использовать UIImagePNG или JPGRepresentation () в таймере, поскольку это снижает производительность.

Моя проблема в том, как использовать этот массив, чтобы он был преобразован в изображение. Если у кого-то есть идеи, связанные с этим, пожалуйста, поделитесь со мной.

Ответы [ 2 ]

1 голос
/ 30 марта 2010
1. UIImage *im = [[UIImage alloc] init]; 
2. im = [array objectAtIndex:i];
3. UIImageWriteToSavedPhotosAlbum(im, nil, nil, nil);

Строка 1 выделяет и инициализирует новый объект UIImage, который никогда не освобождается, поскольку вы перезаписываете указатель на строке 2. Вы пропускаете UIImage в каждой итерации, и вам даже не нужно инициализировать / выделять новый объект.

UIImageWriteToSavedPhotosAlbum([array objectAtIndex:i], nil, nil, nil);

Должно работать нормально.

Также обратите внимание на ответ Карла Норума об освобождении объекта, выпущенного автоматически.

1 голос
/ 30 марта 2010

Вам не нужно публиковать изображение в вашем первом примере кода. [UIImage imageWithScreenContents] возвращает автоматически освобожденный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...