【问题标题】:Memory leak problem, could someone explain what this mean?内存泄漏问题,有人能解释一下这是什么意思吗?
【发布时间】:2011-04-26 21:16:17
【问题描述】:

我在以下代码行中遇到内存泄漏:

代码行:

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"]];
    }
}

【问题讨论】:

  • 您能展示一下您是如何创建 fetchrequest 和谓词的吗?
  • 如果可以的话,还请提供有关泄漏的详细信息。
  • fetchRequest对象是否被释放(是自动释放-还是-在执行fetchRequest后手动释放?
  • fetchRequest 被释放

标签: iphone objective-c memory-leaks


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不,100% 表示此泄漏占您泄漏内存的 100%(即,这是您唯一的泄漏)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2014-04-08
      相关资源
      最近更新 更多