我很难找到内存泄漏,然后再次导致我的应用程序崩溃。分配给JPEGRepresentation的内存似乎没有被释放。这甚至更奇怪,因为UIImageJPEGRepresentation创建的NSData对象只有大约300kb大(取决于图像),但在这个阶段,每个图像的内存使用量会增加大约3-5MB。
这是代码
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];也许你有办法帮我
向曼纽尔致以最良好的问候
发布于 2012-01-11 23:11:05
现在,您在周期中只使用了一个imageData对象。因此,您总是创建JPEG表示而不删除。尝试以下代码:
for(id file in files)
{
if(file!=nil)
{
QueuedObjectData* imageData = [[QueuedObjectData alloc] init];
[imageData setData:UIImageJPEGRepresentation(file, 0.8)];
[imageData setFilename:[NSString stringWithFormat:@"image%d.jpg",i]];
[imageData setContentType:@"image/jpeg"];
[imageData setKeyValue:@"image"];
[queuedObject addData:imageData];
[imageData release];
i++;
}
}在这里你创建对象,使用它,然后删除。
https://stackoverflow.com/questions/8821536
复制相似问题