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 回答