Je le code suivant:causes performSelector fuite, car le type ne va pas dans l'objectif c
SEL moveAlongBoth = @selector(moveAlongX:andY:);
if ([p1 respondsToSelector:moveAlongBoth]) {
[p1 performSelector: moveAlongBoth
withObject: [NSNumber numberWithInt:1]
withObject: [NSNumber numberWithInt:1]];
}
Je reçois un avertissement « performSelector peut provoquer une fuite ». Mais
[p1 moveAlongX:1 andY:1];
Fonctionne très bien.
Je comprends que j'obtiens l'erreur car les valeurs sont définies sur (int) dans l'implémentation et j'utilise NSNumber. Sans changer l'implémentation, comment pourrais-je déclarer une valeur numérique à int (si possible)?
Est-ce une erreur ou un avertissement? –
Désolé, avertissement. Mais le résultat est incorrect. –
Eh bien, alors jetez un oeil au résultat. C'est un avertissement car ARC ne peut pas "voir" au-delà de performSelector. –