gpt4 book ai didi

objective-c - iOS - EXC_BAD_ACCESS 错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:52 24 4
gpt4 key购买 nike

我正在开发 iPhone/iPod 应用程序。以下代码是 UIViewController 的 .m 文件。我得到以下信息:

Thread 1: EXC_BAD_ACCESS (code=2......

当我点击以下行时:

cell.textLabel.text = [datasource objectAtIndex:indexPath.row];

我知道这通常发生在您在释放对象后尝试访问它时,但我不会在尝试访问它之前释放它。我在下面附上了完整的代码。

感谢任何帮助!

#import "HomePage.h"
#import "HusbandryRecordsMain.h"
#import "TaskManagerMain.h"
#import "AnimalInventoryMain.h"
#import "FeedInventoryMain.h"

@implementation HomePage
@synthesize options, datasource;

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad {
[self setupArray];
[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.
}

-(void)setupArray{
options = [NSMutableArray arrayWithObjects:@"Husbandry Records", @"Task Manager", @"Feeder Inventory", @"Animal Inventory", nil];

datasource = options;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//#warning Incomplete method implementation.
// Return the number of rows in the section.
return 4;
}

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

UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

[[cell textLabel] setBackgroundColor:[UIColor clearColor]];
[[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];

// THE FOLLOWING LINE IS THROWING THE ERROR!
cell.textLabel.text = [datasource objectAtIndex:indexPath.row];

//Arrow
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0){
HusbandryRecordsMain *hrm = [self.storyboard instantiateViewControllerWithIdentifier:@"Husbandry Records - Main"];
[self.navigationController pushViewController:hrm animated:YES];
}
else if (indexPath.row == 1){
TaskManagerMain *tmm = [self.storyboard instantiateViewControllerWithIdentifier:@"Task Manager - Main"];
[self.navigationController pushViewController:tmm animated:YES];
}
else if (indexPath.row == 2){
FeedInventoryMain *fim = [self.storyboard instantiateViewControllerWithIdentifier:@"Feeder Inventory - Main"];
[self.navigationController pushViewController:fim animated:YES];
}
else if (indexPath.row == 3){
AnimalInventoryMain *aim = [self.storyboard instantiateViewControllerWithIdentifier:@"Animal Inventory - Main"];
[self.navigationController pushViewController:aim animated:YES];
}

[tableView deselectRowAtIndexPath:indexPath animated:YES];
}

//----------------------TABLEVIEWCELL HEIGHT -------------------------------------------

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

return 70;

}

- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end

最佳答案

-(void)setupArray{
options = [NSMutableArray arrayWithObjects:@"Husbandry Records", @"Task Manager", @"Feeder Inventory", @"Animal Inventory", nil];

datasource = options;
}

您将一个自动释放的对象直接分配给 datasource 实例变量,然后在崩溃的代码行中释放后尝试使用它。如果你打开僵尸检测,它很可能会直接捕捉到它。同样,静态分析器(构建和分析)应该已经捕获了它。

(当然,除非您启用了 ARC,此时其他事情正在发生...)

关于objective-c - iOS - EXC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10096982/

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