2010-01-13 6 views
0

Mon application se bloque lorsque je fais défiler le UITableView sur la première cellule ou la dernière cellule! Pourquoi cela se passe-t-il? J'ajoute avec addObject: nomme les objets de l'UItableview. C'est le code que j'utilise au cellForRowAtIndexPath. Aidez-moi, s'il vous plaît! J'ai essayé de comprendre ce qui ne va pas!App se bloque à cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString * DisclosureButtonCellIdentifier = 
    @"DisclosureButtonCellIdentifier"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: 
          DisclosureButtonCellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
             reuseIdentifier: DisclosureButtonCellIdentifier] 
       autorelease]; 
    } 
    NSUInteger row = [indexPath row]; 

NSString *rowString =nil; 

    rowString = [list objectAtIndex:row]; 

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
    [rowString release]; 
    return cell; 
+0

Veuillez utiliser un bloc

 autour de votre code. –
                        
                            
                                
                            
                        
                    

+0

Veuillez publier le code où vous allouez le tableau de liste et publiez également la méthode suivante - (NSInteger) tableView: (UITableView *) tableView numberOfRowsInSection: (NSInteger) section – FelixLam

Répondre

3

Vous appelez [rowString release]; mais vous ne l'avez jamais conservé.

+0

+1 à propos de cette version; non seulement vous ne le retenez jamais, si rowString n'est pas nul, vous pourriez libérer un objet autoreleased, ce qui est une très mauvaise idée. –

+0

Merci beaucoup! C'était le problème! Dieu te bénisse! – stefanosn

0

Est-il lancer une exception - je suppose l'indice n'est pas défini:

rowString = [list objectAtIndex:row]; 

Pouvez-vous mettre un point d'arrêt sur cette ligne et vider la « liste »?

Questions connexes