内存泄漏问题,有人可以解释这是什么意思?

时间:2011-04-26 21:16:17

标签: iphone objective-c memory-leaks

我在以下代码行中出现内存泄漏: enter image description here

代码行:

NSArray *fetchedObjects = [qContext executeFetchRequest:fetchRequest error:&error];

我一直试图对此进行阅读,并试图在相当长的一段时间内找到原因,但没有成功。

有人能给我一个提示在哪里看? ...我是否正确理解“100%”,表明此代码行100%导致泄漏?

更新

更多代码:

//=========PREPARE CORE DATA DB===========//
if (managedObjectContext == nil) { managedObjectContext = [(FamQuiz_R0_1AppDelegate *)
                                                           [[UIApplication sharedApplication] delegate] managedObjectContext]; }

// Define qContext
NSManagedObjectContext *qContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"questions" inManagedObjectContext:qContext];
[fetchRequest setEntity:entity];

NSArray *fetchedObjects = [qContext executeFetchRequest:fetchRequest error:&error];
for (NSManagedObject *info in fetchedObjects) {
if ([[info valueForKey:@"qDiff"] intValue] == 1) { 
        [allEasyArrayQ addObject:[info valueForKey:@"idQ"]];
    } else if ([[info valueForKey:@"qDiff"] intValue] == 2) { 
        [allMediumArrayQ addObject:[info valueForKey:@"idQ"]];
    } else if ([[info valueForKey:@"qDiff"] intValue] == 3) { 
        [allHardArrayQ addObject:[info valueForKey:@"idQ"]];
    }
}

2 个答案:

答案 0 :(得分:0)

您可能稍后在此方法中甚至在此方法之外过度保留数组或其中的对象。该行仅指示创建对象的位置,而不是执行实际额外保留的位置。为此,您需要使用调用堆栈保留和释放泄漏对象的工具进行检查。

答案 1 :(得分:0)

不,100%表示此泄漏占泄露内存的100%(即,这只是泄漏)。

请注意,如果您想修复泄漏,请查看错误的地方。 Leaks告诉你哪个实例正在泄漏,它是Class和它的内存管理历史。尝试像这样的教程http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/

请注意,Leaks无法告诉您的是您正在泄漏的 行,因为泄漏的原因是您没有做过的事情,而不是您所做的事情(即你没有释放你的对象。)