【发布时间】:2015-08-24 12:06:28
【问题描述】:
使用 API 我得到 500 张图片,异步上传它们。然后我想把这些图片全部保存在CoreData中,但是由于内存不足,应用程序崩溃了。
上传完成后我调用方法createFromBlock
+(id)createFromBlock:(MRBlock *)block{
ManagedBlock *item = [ManagedBlock MR_createInContext:DefaultContext];
item.id = @(block.id);
item.name = block.name;
item.slidesInBlock = @(block.slidesInBlock);
item.sizeBlock = block.sizeBlock;
item.desc = block.desc;
item.imagePath = block.imagePath;
item.image = [MRUtils transformedValue:block.image];
item.price = block.price;
int i = 0;
ManagedItem *new = nil;
for (MRItem *lol in block.items){
NSLog(@"%i", i);
new = [ManagedItem createFromItem:lol];
new.block = item;
[item addItemsObject:new];
new = nil;
i++;
}
[DefaultContext MR_saveWithOptions:MRSaveSynchronously completion:nil];
return item;
}
在 foreach block.items 应用程序崩溃。大约在 150-160 个位置之后。
如果我评论 new = [ManagedItem createFromItem:lol]; - 应用程序不会崩溃
+(id)createFromItem:(MRItem *)object{
ManagedItem *item = [ManagedItem MR_createInContext:DefaultContext];
item.id = @(object.id);
item.title = object.title;
item.detail = object.detail;
item.imagePath = object.imagePath;
item.image = [MRUtils transformedValue:object.image];
return item;
}
【问题讨论】:
-
您是否分批这样做?还是一次性完成 - 一次循环 500 个?
-
Grzegorz Krukowski,一次完成 - 500 个循环
标签: ios objective-c core-data nsarray