gpt4 book ai didi

iphone - NSArray 导致 EXC_BAD_ACCESS

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

我在使用 NSArray 填充 UITableView 时遇到问题。我确信我正在做一些愚蠢的事情,但我无法弄清楚。当我尝试进行简单的计数时,我得到了 EXC_BAD_ACCESS,我知道这是因为我试图从不存在的内存位置读取。

我的 .h 文件有这个:

@interface AnalysisViewController : UITableViewController 
{
StatsData *statsData;
NSArray *SectionCellLabels;
}

我的 .m 有这个:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"AnalysisViewController:viewWillAppear");

// Step 1 - Create the labels array
SectionCellLabels = [NSArray arrayWithObjects:@"analysis 1",
@"analysis 2",
@"analysis 3", nil];
}


- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"AnalysisViewController:cellForRowAtIndexPath");

// Check for reusable cell first, use that if it exists
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:@"UITableViewCell"];

// If there is no reusable cell of this type, create a new one
if (!cell) {
cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"UITableViewCell"] autorelease];
}

/******* The line of code below causes the EXC_BAD_ACCESS error *********/
NSLog(@"%d",[SectionCellLabels count]);

return cell;
}

非常感谢任何帮助。

迈克

最佳答案

问题出在这里:

SectionCellLabels = [NSArray arrayWithObjects:@"analysis 1",
@"analysis 2",
@"analysis 3", nil];

您的数组是自动释放的,因此在方法结束时它可能无法再访问。

要解决这个问题,只需附加一条 retain 消息,如下所示:

SectionCellLabels = [[NSArray arrayWithObjects:..., nil] retain];

并且一定要在另一个地方release数组,比如你的dealloc方法。

一个额外的提示,您可能希望使用第一个字符为小写的名称,这样它们就不会看起来是类。您甚至可以注意到这混淆了 StackOverflow 的突出显示。

关于iphone - NSArray 导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914422/

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