NSMutableArray replaceObjectAtIndex crash
Il devrait y avoir une erreur dans la console. La console vous aidera 99% des cas en cas d'accident, lisez-le! Cela devrait ressembler à -[NSArrayI replaceObjectAtIndex:withObject:] unrecognized selector sent to instance
. C'est la partie importante de votre erreur. En d'autres termes, ce n'est pas un NSMutableArray
qui indique que le problème concerne la création de Upcase_Keys
.
Pourquoi alors? Parce que @[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"];
est une syntaxe courte main pour NSArray
, pas NSMutableArray
. Donc, même s'il est déclaré comme NSMutableArray
, l'objet est en fait un NSArray
. En fait, si vous écoutez XCode, il devrait vous donner cet avertissement:
types pointeur incompatibles initialisation 'NSMutableArray *'
avec une expression de type 'NSArray *'
Ce qui concorde avec tout ce que dit avant. `Parfois, XCode peut se tromper, mais essayez de l'écouter.
Il y a quelques possibilités appellent:
NSMutableArray *Upcase_Keys = [NSMutableArray arrayWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [[NSMutableArray alloc] initWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"] mutableCopy];
Enfin, une recommandation utiliser camelcase: Évitez de nommer votre var avec une majuscule. Utilisez un minuscule pour la première lettre. Je dirais qu'après le _
est moins problématique, mais nous avons tendance à écrire à la place.
Upcase_Keys
=>upcase_Keys
=>upcaseKeys
Merci d'avoir signalé le problème. : D –