0
-(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 で上記のコードを呼び出しましたが、ビューが最初に表示されたときにリークが表示されません。しかし、[戻る] ボタンを押してビューを再度クリックすると、計測器の表示が漏れます。

  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

さらに、私は**retain count of makeJSON を出力し、それは 2 を示しています

助けが必要!!!!!どこが間違っているのか教えてください

4

1 に答える 1

0

この行の削除を確認しましたか

 [makeJSON release];

このオブジェクトを割り当てていないか、このオブジェクトを解放しようとすると、このタイプのエラーが発生します。

于 2012-10-04T09:09:17.620 に答える