我使用 Core Data 存储三个实体 User、LiveCard 和 LivePromos。当我将此数据读入内存并将其聚合为单个对象时,我的应用程序崩溃并给出如下所示的错误。
User *user = (User *)[self getEntityWithName:@"User" andPopulator:@selector(populateUser:)];
if(user != nil)
{
NSMutableArray *liveCards = [self getEntityWithName:@"LiveCard" andPopulator:@selector(populateLiveCard:)];
[user setCards:liveCards];
NSArray *livePromos = [self getEntityWithName:@"LivePromo" andPopulator:@selector(populatePromos:)];
for(LiveCard *card in user.cards) {
NSMutableArray *cardsPromo = [NSMutableArray array];
for(LivePromo *promo in livePromos) {
if([card.cardId isEqualToString:promo.cardId]) {
[cardsPromo addObject:promo];
}
}
card.promos = cardsPromo;
}
}
return user;
这是我得到的错误
MyApp(39516,0x3d38bb78) malloc: *** mmap(size=1935958016) 失败(错误代码=12)
*** 错误:无法分配区域
*** 在 malloc_error_break 中设置断点进行调试
注意:我在我的应用程序中使用 ARC
更新
我已经尝试设置malloc_error_break
符号断点,这是我得到的 Tread Navigator 的屏幕截图
http://postimg.org/image/x48p0m6df/
我还在 iPhone 模拟器中的应用程序上运行 Instrument.Allocations 实用程序,这是一个屏幕截图,显示malloc
. 我无法理解的是这个分配是在哪里进行的!
http://postimg.org/image/97v4zhszp/
抱歉,我无法直接在 SO 上上传图片
更新感谢大家的投入,问题是 UICollectionView 已损坏并且项目数以百万计。现在问题已解决