gpt4 book ai didi

iphone - 向下滚动太多时 UITableView 应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 20:50:23 25 4
gpt4 key购买 nike

当我向下滚动表格时,应用程序崩溃了。我找不到代码错误在哪里。

这是我的代码:

NSMutableDictionary *tableDataDictionary;
NSInteger *rows_in_section;


-(void) initView
{
if (!tableDataDictionary)
{
tableDataDictionary = [ [NSMutableDictionary alloc] init];
}
[self reloadTableData];
}

-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[mainTableView deselectRowAtIndexPath: [mainTableView indexPathForSelectedRow] animated:NO];

[tableDataDictionary release];
tableDataDictionary = nil;
free(rows_in_section);
}

-(void) reloadTableData {
[tableDataDictionary removeAllObjects];


//Sections
if (rows_in_section)
{
free(rows_in_section);
}

rows_in_section = (NSInteger*)calloc(25, sizeof(NSInteger));
for (int i = 0; i <= 25; i++)
{
rows_in_section[i] = 0;
}

NSMutableArray *words_in_section = [ [NSMutableArray alloc] init];

int cur_section = -1;

while ( TRUE )
{
WordObject *tempWordObj = [ [WordsDatabase sharedWordsDatabase] getNextWordABC];
if (!tempWordObj)
{
[tableDataDictionary setObject:words_in_section forKey:[NSNumber numberWithInt: cur_section] ];
[tempWordObj release];

[tableDataDictionary setObject:[words_in_section copy] forKey:[NSNumber numberWithInt: cur_section] ];
[words_in_section removeAllObjects];

break;
}

//First loop
if (cur_section == -1) cur_section = toupper([ [tempWordObj word] characterAtIndex:0 ] ) - 'A';

//If a has letter changed, assign the previous array to a dictionary
if ( (toupper([ [tempWordObj word] characterAtIndex:0 ] ) - 'A') != cur_section )
{
[tableDataDictionary setObject:[words_in_section copy] forKey:[NSNumber numberWithInt: cur_section] ];
[words_in_section removeAllObjects];
}

cur_section = toupper([ [tempWordObj word] characterAtIndex:0 ] ) - 'A';

[words_in_section addObject:tempWordObj];

[tempWordObj release];
tempWordObj = nil;

rows_in_section[cur_section]++;

}

[words_in_section release];

[ [WordsDatabase sharedWordsDatabase] endGettingWordsABC];


[mainTableView reloadData];
[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];

}


//
// Table handling
//

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 26;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return rows_in_section[section];
}

// Adding a section index here
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return ALPHA_ARRAY;
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
return index;
}


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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}


WordObject *tempWordObj = [ [tableDataDictionary objectForKey: [NSNumber numberWithInt:[indexPath section] ] ] objectAtIndex: [indexPath row] ];

if (!tempWordObj)
{
DebugLog(@"!tempWordObj");
return cell;
}

cell.text = [tempWordObj word];

[tempWordObj release];

return cell;
}

如何解决向下滚动的问题以及为什么会出现这种情况?如果您在我的代码中发现任何其他缺点,请告诉我。

预先感谢您,伊利亚。

最佳答案

您不需要此行;

[tempWordObj release];

[NSDictionary objectForKey] 返回一个自动释放的对象,即该对象将在函数返回后的某个时间自动释放。

关于iphone - 向下滚动太多时 UITableView 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com