У меня возникли проблемы с обнаружением утечки памяти, что снова приводит к сбою моего приложения. Кажется, что память, выделенная для JPEGRepresentation, не освобождается. Это еще более любопытно, потому что объект NSData, созданный UIImageJPEGRepresentation, имеет размер около 300 кбайт (зависит от изображения), но на этом этапе использование памяти скапливается примерно на 3-5 мегабайт на изображение.UIImageJPEGПреобразование
Это код
QueuedObject* queuedObject = [[QueuedObject alloc] init];
[queuedObject setUrl:url];
QueuedObjectData* jsonQueuedData = [[QueuedObjectData alloc] init];
[jsonQueuedData setData:jsonData];
[jsonQueuedData setFilename:@"message.json"];
[jsonQueuedData setContentType:@"application/json"];
[jsonQueuedData setKeyValue:@"JSONMessage"];
[queuedObject addData:jsonQueuedData];
int i=1;
QueuedObjectData* imageData = [[QueuedObjectData alloc] init];
for(id file in files)
{
if(file!=nil)
{
[imageData setData:UIImageJPEGRepresentation(file, 0.8)];
[imageData setFilename:[NSString stringWithFormat:@"image%d.jpg",i]];
[imageData setContentType:@"image/jpeg"];
[imageData setKeyValue:@"image"];
[queuedObject addData:imageData];
i++;
}
}
[[UploadQueue sharedInstance] addObject:queuedObject];
[jsonQueuedData release];
[jsonData release];
[url release];
[imageData release];
[queuedObject release];
Может быть, у вас есть идея, чтобы помочь мне
приветы Manuel
Это на самом деле способ, которым я был раньше, а затем изменил его, отслеживая проблему. Любопытно, что приборы не обнаруживают никаких утечек, но внезапно приложение падает после Memory Low Warning Level 1 - без какой-либо другой информации в отладчике. – Manuel
Но это такой подход неправильный? У вас возникли проблемы с этим кодом? – beryllium
Извините за путаницу. Код, кажется, прав, но в Инструментах (Activity View - Memory Usage) я все еще вижу много и много памяти, используемой приложением. Есть ли способ узнать, где используется память? Если я смотрю в инструменте «Распределение инструментов», нет ничего даже близко к количеству, используемому здесь:/(Я говорю о 10+ мегабайтах для добавления 3 изображений (которые всего лишь около 300 kb каждый!) К моему объекту queuedObject) – Manuel