0

エラーが発生しているコードは次のとおりです。

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {   
  currentElement = [elementName copy];
  NSLog(@"didEndElement : %@",currentElement);

  if ([currentElement isEqualToString:@"NewDataSet"]) {
    [dicEvent setObject:catIDArray forKey:@"term_id"];
    [dicEvent setObject:catArray forKey:@"cat_name"];
    [dicEvent setObject:catTimgArray forKey:@"thumb_nail_url"];
    [dicEvent setObject:catLimgArray forKey:@"large_image_url"];

    [xmlData addObject:[dicEvent copy]];  
  }
}

- (void)parserDidEndDocument:(NSXMLParser *)parser {
  if ([catArray count] == 0) {
    UIAlertView *alert =
    [[UIAlertView alloc] initWithTitle:@"Data" 
                               message:@"No record found." 
                              delegate:self
                     cancelButtonTitle:@"OK" 
                     otherButtonTitles:nil]; 

    [alert show];     
    [alert release];
    [activityIndicator stopAnimating];
    activityIndicator.hidesWhenStopped = YES;
  }
  else {
    NSLog(@"adding category : %@", xmlData);
    [tblView reloadData];
  }
}

テーブルがロードされているときに、このメソッドでエラーが発生します....行でエラーが発生しています return [xmlData count];

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  NSLog(@"[xmlData count] 2 : %d", [xmlData count]);
  return [xmlData count];
}
4

2 に答える 2

0

最初に投稿したメソッドにメモリ リークがあります。文字列のコピーを作成しますが、elementName解放することはありません。また、初期化方法を指定していませんxmlDataが、推測を危険にさらし、所有していない配列で初期化したと言います。あなたのinit方法では、あなたが持っていることを確認してください:

xmlData = [[NSMutableArray alloc] init];

これにより、オブジェクトを所有することが保証されます。あなたのdealloc方法では、あなたも持っているべき[xmlData release]です。

于 2012-05-09T06:42:36.840 に答える
0
NSMutableArray *xmlData = [[NSMutableArray alloc] init];

また、NSLogを入れます

于 2012-05-09T06:42:59.947 に答える