Ошибка iOS – EXC_BAD_ACCESS

Я разрабатываю приложение iPhone / iPod. Следующий код – это .m-файл UIViewController. Я получаю следующее:

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. // eg 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 

Какие типы файлов и источники данных? Также попробуйте self.options и т. Д.

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

Вы назначаете объект с автореализацией непосредственно переменной экземпляра datasource, а затем пытаетесь использовать ее после ее выпуска в строке сбойного кода. Если вы включили обнаружение Зомби, это, скорее всего, поймало бы это прямо. Кроме того, статический анализатор (сборка и анализ) должен был поймать его.

(Если, конечно, у вас нет ARC, в какой момент происходит что-то еще …)

  • Как сделать iPhone4 и ниже версии приложения совместимой для iPhone5?
  • Как заменить строку без учета регистра в объективе-c iphone?
  • Распознать текущее положение устройства как плоское
  • «Динамическое» отображение поплавков?
  • Круглое плавающее значение до .1 (десятки мест)
  • Использование слабой функции self в функции dispatch_async
  • Метод BOOL возврат из внутреннего блока
  • Self.Type не может быть напрямую преобразован в AnyClass в расширение до класса object-c в swift
  • Папка документов приложений Cydia не создана
  • Утечка памяти с помощью SubstringWithRange NSString
  • Насколько опасно сравнивать значения с плавающей запятой?
  • Давайте будем гением компьютера.