Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS内存堆不断增长_Ios_Core Data_Memory Management_Heap - Fatal编程技术网

iOS内存堆不断增长

iOS内存堆不断增长,ios,core-data,memory-management,heap,Ios,Core Data,Memory Management,Heap,我希望这只是一些我无法理解的简单事情 我有一个带有类扩展的核心数据模型 +(CDvitalsPO2Data *) newVitalDataInContext:(NSManagedObjectContext *)context { NSEntityDescription *entity = [NSEntityDescription entityForName:po2EntityName inManagedObjectContext:context]; CDvitalsPO2Data

我希望这只是一些我无法理解的简单事情

我有一个带有类扩展的核心数据模型

+(CDvitalsPO2Data *) newVitalDataInContext:(NSManagedObjectContext *)context {
    NSEntityDescription *entity = [NSEntityDescription entityForName:po2EntityName inManagedObjectContext:context];
    CDvitalsPO2Data *newVitalsDataPoint = [[[CDvitalsPO2Data class] alloc] initWithEntity:entity insertIntoManagedObjectContext:context];    
    return newVitalsDataPoint;
}
因此,这将在po2实体名称的上下文和中返回一个新项。太好了

如果我从此代码调用此类扩展:

-(void) logPO2:(NSDictionary *)po2EntryDictionary forThisTime:(NSDate *)loggedTime inContext:(NSManagedObjectContext *)context {

if (context) {
        CDvitalsPO2Data *vitalsPO2Entry;
        vitalsPO2Entry  = [CDvitalsPO2Data newVitalDataInContext:context];
        vitalsPO2Entry.timeStamp  = [NSDate dateWithTimeIntervalSinceReferenceDate:[loggedTime timeIntervalSince1970]];

        vitalsPO2Entry.accelX = [po2EntryDictionary objectForKey:po2LogAccelX];
        vitalsPO2Entry.accelY = [po2EntryDictionary objectForKey:po2LogAccelY];
        vitalsPO2Entry.accelZ = [po2EntryDictionary objectForKey:po2LogAccelZ];
        vitalsPO2Entry.patchID = [po2EntryDictionary objectForKey:po2LogPatchID];
        vitalsPO2Entry.patchRSSI = [po2EntryDictionary objectForKey:po2LogPatchRSSI];
        vitalsPO2Entry.sequenceID = [po2EntryDictionary objectForKey:po2LogSequenceID];
        vitalsPO2Entry.sessionID = [po2EntryDictionary objectForKey:po2LogSessionID];
        vitalsPO2Entry.po2Value = [po2EntryDictionary objectForKey:po2LogValue];

        NSError *error;

        [[vitalsPO2Entry managedObjectContext] save:&error];
        if (error) {
            NSLog(@"save error:%@",error);
        }
}

我将对象插入到上下文中,它被保存,但堆只是不断增长。如果这个日志每秒或每分钟运行一次,我只看到内存增长。我在调用中加入了各种各样的弱指针,尝试将其设置为零,并将自动释放池设置到适当的位置;似乎没有什么东西会减速,更不用说阻止记忆的蔓延了。我觉得我缺少了一些基本的东西。这些对象在上下文保存后一旦超出范围,不应该被转储吗?当我查看Instruments时,对象上似乎有一个retain,但它是在系统级的,不是来自我的一个例行调用。

我所看到的所有问题都直接与Xcode方案有关。 产品->方案 选择运行选项 取消选中->队列调试(启用回溯记录)


一旦这样做了,所有的内存占用增长立即消失。

我看到的所有问题都直接与Xcode方案有关。 产品->方案 选择运行选项 取消选中->队列调试(启用回溯记录)

一旦这样做,所有的内存占用增长立即消失