1

Je veux mettre à jour la table d'un fil de fond en utilisant cette partie du codeEXC_BAD_ACCESS alors que [WKInterfaceTable setNumberOfRows: withRowType]

__block typeof(self.tableB) self_tableB = self.tableB; 
    [lwc setBaseControllerCallback:^(int ndx) { 
     __block typeof(ndx) ndx_t = ndx; 
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
      [self_tableB setNumberOfRows: 0 withRowType:TABLEELEMENT]; 
      [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT]; 
     }]; 

    }]; 

^(int ndx) { 
//... 
} 

est un bloc appelé à partir de fils de fond (NSThread) et lwc - est une instance de ma classe de thread d'arrière-plan personnalisée.

Pour effacer cette méthode est appelée comme avec: // code à l'intérieur fil si (handlerBase_inner) { handlerBase_inner (NDX ++); }

Ainsi, à [self_tableB setNumberOfRows: ndx_t withRowType:TABLEELEMENT]; Je peux voir EXC_BAD_ACCESS. Pourquoi? Quel est le

Répondre

1

Je m'inquiète de self_tableB. Je ne suis pas sûr que vous vouliez une référence forte, le garder artificiellement en vie pourrait l'amener à renvoyer un pointeur à son délégué.

__block __weak typeof(self.tableB) self_tableB = self.tableB;

Ajout d'une force d'annotation faible à l'affaire.