Cocoa Touch表数据源问题

时间:2009-03-31 03:44:30

标签: iphone cocoa-touch datasource nsmutablearray retain

我在显示数据源的结果时遇到了一些麻烦。此代码将在控制台中显示不同(和正确)的结果,但会在模拟器中产生各种随机垃圾。

(“results”是该类的NSMutableArray属性。)

-(void) handleSearchForKeywords: (NSString *) keywords {
    [results removeAllObjects];
    int r = rand() % 10;
    for( int i = 0; i < r; i++ ) {
        [results addObject:[NSString stringWithFormat:@"test %i: %@", i, keywords]];
    }
    [self reloadTheTable];
}

-(void) reloadTheTable {
    NSLog( @"current array contents: %@", results );
    [tableView reloadData];
}

我猜这可能与数组的内存保留或数组中的字符串有关?我恐怕还没有掌握这一点。

[编辑以响应Marc Bessey - 我认为这里的一切都是您的基本数据源方法]

-(NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) section {
    return [results count];
}

-(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
    static NSString *SearchViewControllerCell = @"SearchViewControllerCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SearchViewControllerCell];
    if( cell == nil ) {
        cell = [[[UITableViewCell alloc] initWithFrame: CGRectZero reuseIdentifier: SearchViewControllerCell] autorelease];
        NSUInteger row = [indexPath row];
        [cell setText:[results objectAtIndex:row]];
    }
    return cell;
}

1 个答案:

答案 0 :(得分:1)

我认为问题出在您发布的代码中。在代码中更有可能为表视图实现数据源。