0

J'ai un UITableView qui montre une liste de recettes. Je crée chaque recette avec une classe personnalisée, Recette, et ensuite mettre les recettes dans un tableau msmutable, «recettes». Le problème est, quand je commence à faire défiler le tableau 'recettes' semble perdre toutes ses données (le compte est 0). Cela signifie que les cellules qui apparaissent ne peuvent afficher aucune information de recette. Qu'est-ce qui se passe exactement? Pourquoi le tableau disparaît-il?Disparition de NSMutableArray, provoque UiTableView pour afficher des cellules vides

code

est ci-dessous:

// .h 

#import "CustomCell.h" 
#import "Recipe.h" 
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 
@property (weak, nonatomic) IBOutlet UITableView *recipeTableView; 
@property (weak, nonatomic) NSMutableArray *recipes; 


// .m 
@synthesize recipeTableView; 
@synthesize Recipes; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    Recipe *recipe1 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 1"]; 
    recipe1.recipeImage = [UIImage imageNamed:@"recipeImage1.png"]; 

    Recipe *recipe2 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 2"]; 
    recipe2.recipeImage = [UIImage imageNamed:@"recipeImage2.png"]; 

    Recipe *recipe3 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 3"]; 
    recipe3.recipeImage = [UIImage imageNamed:@"recipeImage3.png"]; 

    Recipe *recipe4 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 4"]; 
    recipe4.recipeImage = [UIImage imageNamed:@"recipeImage4.png"]; 

    Recipe *recipe5 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 5"]; 
    recipe5.recipeImage = [UIImage imageNamed:@"recipeImage5.png"]; 

    Recipe *recipe6 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 6"]; 
    recipe6.recipeImage = [UIImage imageNamed:@"recipeImage6.png"]; 

    Recipe *recipe7 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 7"]; 
    recipe7.recipeImage = [UIImage imageNamed:@"recipeImage7.png"]; 

    Recipe *recipe8 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 8"]; 
    recipe8.recipeImage = [UIImage imageNamed:@"recipeImage8.png"]; 

    Recipe *recipe9 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 9"]; 
    recipe9.recipeImage = [UIImage imageNamed:@"recipeImage9.png"]; 

    Recipe *recipe10 = [[Recipe alloc] initWithCategory:@"Seafood" title:@"Recipe 10"]; 
    recipe10.recipeImage = [UIImage imageNamed:@"recipeImage10.png"]; 


    recipes = [NSMutableArray arrayWithObjects:recipe1, recipe2, recipe3, recipe4, recipe5, recipe6, recipe7, recipe8, recipe9, recipe10, nil]; 

} 




- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Recipe *recipe = (Recipe*)[recipes objectAtIndex:indexPath.row]; 
    static NSString *CellIdentifier = @"RecipeCell"; 
    CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    cell.titleLabel.text = recipe.title; 
    return cell; 
} 
+0

Déclarez la propriété comme ceci: '@property (fort, nonatomic) NSMutableArray * montre;' – beryllium

Répondre

1

Votre tableau est autoreleased, ajoutez ce qui suit après l'affectation des recettes ...

[recipes retain]; 

OU changer la façon dont vous créez le tableau pour ... Si vous utilisez ARC dans iOS5, vous devez déclarer que votre variable de recettes est aussi forte que celle que vous utilisez. fait efficacement la retenue pour vous.

+0

Merci, en changeant pour travaillé fort. Mes premières incursions dans ARC ont été déroutantes. – cannyboy

0

@simon a raison. De plus, recipeTableView doit être (non atomique, fort) car vous voulez qu'il soit conservé tant que votre vue est chargée. En général, je préférerais utiliser fort vs faible à moins d'avoir une raison spécifique d'en avoir besoin. À mesure que vous vous familiariserez avec la gestion de la mémoire et les cycles de vie des objets, vous découvrirez des situations où la faiblesse est souhaitable/nécessaire.

Questions connexes