Je suis relativement nouveau dans la programmation iOS mais avec beaucoup d'expérience en programmation dans d'autres langages, principalement en C# et en Java. J'essaie de faire quelque chose comme une galerie de photos avec des catégories spécifiques pour certains produits pour un appareil iPad. L'interface utilisateur est assez simple faite à partir d'un "écran de sélection" (FirstViewController, voir ci-dessous) et "Galerie". L'écran de sélection contient 2 UITableViews, master
et detail
qui affiche les catégories de produit et les sous-catégories, respectivement. Lorsque l'utilisateur fait la sélection, il tape une "voir l'image" button
et les images sont affichées en mode défilement dans "Galerie". "Galerie" est un fichier XIB séparé qui est présenté de manière modale. Tout fonctionne bien. Mais, chose étrange se produit lorsque l'utilisateur bascule entre "Galerie" et "écran de sélection". Et la chose étrange est que cela arrive exactement au 4ème "commutation" entre eux. Je continue à recevoir le message:iPad: Numéro UITableView
- [FirstViewController tableView: didSelectRowAtIndexPath:]: message envoyé à l'instance désallouées 0x4b1f9f0"
Ensuite, le programme se bloque ... j'ai mis NSAutoreleaseFreedObjectCheckEnabled, NSZombiesEnabled et NSDebugEnabled et toujours pas de description plus. Même « Garde malloc » n'a pas aidé.
Je comprends cela comme une question de mémoire mais ne sais pas pourquoi? fonctionne parfaitement 3 fois, mais pas le 4ème.
Heres la partie du code qui provoque des problèmes:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//check which table (master or detail) row is clcked then perform click event
if(tableView.tag == 0){
//populate list of brands using predefined function
[self populateBrandNames:(int)indexPath.row];
//reload data
[detail reloadData];
//4 a good UI experience we'll remove any previous picture loaded into brandImage
bUserSelected = false;
[brandImage setBackgroundImage:nil forState:UIControlStateNormal];
}else{ //the detail table sent event
NSIndexPath *master_row, *details_row;
//get selected rows
master_row = [master indexPathForSelectedRow];
details_row = [detail indexPathForSelectedRow];
NSString *logoName = [[NSString alloc] initWithFormat:@"%02d%02d_logo", (int)master_row.row, (int)details_row.row];
NSString *path = [[NSBundle mainBundle] pathForResource:logoName ofType:@"jpg"];
//check if we have path to resource (if logo exsist)
if(path != nil){
UIImage *logo = [[UIImage alloc] initWithContentsOfFile:path];
//display selected logo
bUserSelected = true;
[brandImage setBackgroundImage:logo forState:UIControlStateNormal];
NSLog(@"brandImame set");
//set current galery tag
[currentGaleryTag setString:@""];
[currentGaleryTag appendFormat:@"%02d%02d", (int)master_row.row, (int)details_row.row];
[logo release];
}else{
NSLog(@"logo not loaded, galery tag : %@, category name : %@", logoName, [detail cellForRowAtIndexPath:details_row].textLabel.text);
}
[logoName release];
}
}
Merci à l'avance!