我在显示来自数据源的结果时遇到了一些问题。此代码将在控制台中显示不同(且正确)的结果,但会在模拟器中导致各种随机废话。
(“结果”是该类的 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;
}