【问题标题】:JSONValue shows memory leaksJSONValue 显示内存泄漏
【发布时间】:2012-10-04 07:27:46
【问题描述】:
-(void)loadMakes:(NSString *)strValue
{
  NSDictionary *makeJSON = [strValue JSONValue];
  NSDictionary *makes = NULL;
  NSDictionary *car = NULL;
  NSArray *keys = NULL;
  NSMutableArray *tempCar = [[NSMutableArray alloc]init];
  if ([makeJSON count] != 0)
  {
    makes = [makeJSON objectForKey:@"makes"];
    keys=[[makes allKeys]sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

    for(int i=0; i<[makes count]; i++)
    {
      car = [makes objectForKey:[keys objectAtIndex:i]];
      CarMake *carMakeObj = [[CarMake alloc]init];
      [carMakeObj setCarName:[car objectForKey:@"name"]];
      [carMakeObj setCarLinks:[car objectForKey:@"link"]];
      //[carMakeObj Print];
      [tempCar addObject:carMakeObj];
      [carMakeObj release];
    }

    self.carNamesArrayList=tempCar;
    [tempCar release];
   }
  NSLog(@"count %d",[carNamesArrayList count]);
}

我在 -viewDidAppear 中调用了上面的代码,当视图第一次出现时它没有显示任何泄漏。但是当我按下 BACK 按钮并再次单击视图时,仪器会在

处显示泄漏
  NSDictionary *makeJSON=[strValue JSONValue];

然后我添加了

  [makeJSON release];
  makeJSON = nil;

但我遇到了类似的错误

  ****-[CFDictionary release]: message sent to deallocated instance

然后我添加了喜欢

  NSDictionary *makeJSON=[[strValue JSONValue]retain];

我又遇到了这样的错误

  ****-[CFDictionary release]: message sent to deallocated instance

此外,我打印了 **makeJSON 的保留计数,它显示为 2

需要帮助!!!!请说出我哪里出错了

【问题讨论】:

  • Instruments 显示了泄露的对象及其创建位置。这可能不是它泄漏的地方。检查这个对象的去向,以及它上面的所有保留/释放。运行静态分析器可能会给你很好的提示!

标签: iphone json sbjson


【解决方案1】:

您是否检查过删除此行

 [makeJSON release];

因为你没有分配这个对象,或者你打算释放这个对象,所以它给出了这种类型的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-20
    • 2019-07-17
    • 2011-10-10
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2011-10-22
    • 2019-02-10
    相关资源
    最近更新 更多