En Objective-C, il existe une méthode de copie définie en NSCopying
et une autre est mutableCopy
, définie en NSMutableCopying
. NSDictionary (superclasse de NSMutableDictionary) est conforme à ces deux protocoles.
Mais dans accesseurs de propriété, seule copie est disponible qui utilise la méthode de copie sur NSMutableDictionary
pour créer un objet immuable, d'où l'avertissement lorsque vous exécutez l'analyseur statique, parce que vous essayez maintenant de stocker un objet NSDictionary
dans une référence NSMutableDictionary
.
Si vous appelez une méthode NSMutableDictionary
sur cette référence, je pense que l'application devrait tomber en panne.
Pour résoudre ce problème, vous pouvez utiliser strong qui contiendra la référence pour vous. Mais, si vous avez vraiment besoin d'une copie (pour une raison quelconque), vous pouvez écrire votre propre compositeur, quelque chose comme ceci:
@property (nonatomic) NSMutableDictionary *parameters;
- (void)setParameters:(NSMutableDictionary *)parameters {
_parameters = [parameters mutableCopy];
}
pourquoi vous avez utilisé 'copy' –
est-il nécessaire « copie »? une raison pour l'utiliser? –
jak vérifier la réponse –