NSMutableArray contient la méthode ne détectant pas d'objet
-
22-07-2019 - |
Question
// Add the button to the NSMutableArray.
...
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[[self hBtns] addObject:btn];
...
// In another method, try to see if it exists.
- (void)didPushBtn:(id)sender
{
UIButton *btn = (UIButton *)sender;
if ([[self hBtns] containsObject:btn]) // Is false every time.
...
}
Pourquoi ne détecte-t-il pas que le UIButton est dans le tableau?
MODIFIER
Il s'avère qu'il ne le détectera même pas juste après son ajout:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[[self hBtns] addObject:btn];
if ([[self hBtns] containsObject:btn]) // Returns false.
La solution 2
J'avais oublié d'initialiser le tableau (* doh *):
[self setHBtns:[[NSMutableArray alloc] initWithCapacity:0]];
Autres conseils
On dirait que la comparaison isEqual:
échoue. Pouvez-vous jeter un coup d'œil au hash
de l'UIButton aux deux endroits (où il est ajouté, puis à didPushBtn
) et voir si elles ont la même valeur?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow