I ran into a bizarre issue here. I'm developping an iOS app (for iPad, specifically), and I'm using an UITableView at some point to display a list of things.
Now, when I scroll inside the bounds of the view (not above first element, and not below the last), it works okay. However, it just crashes violently when I scroll further than that, with no other messages than :
- EXC_BAD_ACCESS when I scroll down to the last element
- SIGABRT with a backtrace when I scroll upper than the first
I looked on Google, and it seems like I'm releasing some objects too much, but I can't figure out which ones.
I also tried running the app inside the Instruments, but the Instruments window just freezes each time I run the app, forcing me to kill it by hand... And of course I get no results...
Here a bit of the related code :
/*
Returns the cells of the table view
*/
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Create a new cell view
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell...
cell.textLabel.text = [newestModules objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"Background-Texture-Dark-Small.png"]];
cell.imageView.image = [UIImage imageNamed:@"Icon-Maths.png"];
UIView *v = [[[UIView alloc] initWithFrame:cell.frame] autorelease];
// Set view background color
v.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background-Texture-Dark-Small.png"]];
// This view will be activated when the cell is selected
cell.selectedBackgroundView = v;
return cell;
}
EDIT: UITableView Load and Unload methods :
- (void)viewDidLoad
{
[super viewDidLoad];
// Transparent background
self.tableView.backgroundView = nil;
// Generate list of newest modules. Will later look for them on the internet, but for now we only add some test examples.
newestModules = [[NSMutableArray alloc] initWithObjects:@"Test 1", @"Test 2", @"Test 3", @"Test 4", @"Test 5", nil];
}
- (void)viewDidUnload
{
[newestModules release];
[super viewDidUnload];
}