过度释放视图时EGOTableViewPullRefresh崩溃

时间:2012-04-24 16:15:38

标签: iphone ios xcode pull-to-refresh

我嵌入了我的项目 EGOTableViewPullRefresh ,一切正常并且更新正常,但是当我将视图拉得太多而无法更新时,应用程序崩溃并出现错误:

  

2012-04-24 19:02:56.670测试[3927:f803] *终止app到期   未被捕获的异常'NSRangeException',原因:'* - [__NSArrayM   objectAtIndex:]:索引2超出空数组的边界'    * 第一次抛出调用堆栈:

这段代码

self.tabBarController = [[[UITabBarController alloc] init] autorelease];
NSMutableArray * viewControllers = [[NSMutableArray alloc] init];


//plist file full path
NSString *urlStr = [[NSString alloc] 
                    initWithFormat:@"http://www.test.com/data.xml?seedVar=%f", 
                    (float)random()/RAND_MAX];
NSURL *url = [NSURL URLWithString:urlStr];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfURL:url];

  //Get the folder array
NSArray * subscriptionFolders = [dict objectForKey:@"Folders"];

更新

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        [cell.textLabel setNumberOfLines:2];
        [cell.detailTextLabel setNumberOfLines:3];
        [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
    }

    RSSItem * rssItem = (RSSItem *)[_rssParser.rssItems objectAtIndex:indexPath.row];
    [cell.textLabel setText:rssItem.title];
    [cell.detailTextLabel setText:rssItem.summary];

    return cell;
}
你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。当我在 reloadTableViewDataSource 中调用 rssParser 时,它会崩溃。当我尝试在 dataSourceDidFinishLoadingNewData 中调用 rssParser 时,一切正常,没有崩溃。

- (void)reloadTableViewDataSource{
[super performSelector:@selector(dataSourceDidFinishLoadingNewData) withObject:nil afterDelay:2.0];
}

- (void)dataSourceDidFinishLoadingNewData{
    [_rssParser start];
    [refreshHeaderView setCurrentDate]; 
    [super dataSourceDidFinishLoadingNewData];   
}