title: iOS - EXC_BAD_ACCESS Error
body: <p>I am developing an iPhone/ iPod app. The following code is the .m file of a UIViewController. I get the following: </p>
  
  <pre><code>Thread 1: EXC_BAD_ACCESS (code=2......
  </code></pre>
  
  <p>when I hit the following line:</p>
  
  <pre><code>cell.textLabel.text = [datasource objectAtIndex:indexPath.row];
  </code></pre>
  
  <p>I understand that this typically happens when you try to access an object after you released it, but I do not release it before I try to access it. I have attached the complete code below. </p>
  
  <p>Any help is thankful!</p>
  
  <pre><code>#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
  </code></pre>