In Objective-C gibt es eine Kopiermethode definiert in NSCopying
und andere ist mutableCopy
, definiert in NSMutableCopying
. NSDictionary (Oberklasse von NSMutableDictionary) entspricht diesen beiden Protokollen.
Aber in Eigenschaftenaccessoren ist nur Kopie zur Verfügung, die Kopiermethode auf NSMutableDictionary
verwendet ein unveränderliches Objekt zu erstellen, damit die Warnung aus, wenn Sie den statischen Analysator ausgeführt werden, da Sie jetzt ein NSDictionary
Objekt in eine NSMutableDictionary
Referenz zu speichern versuchen.
Wenn Sie irgendeine Methode NSMutableDictionary
auf dieser Referenz aufrufen, rechne ich, dass die App abstürzen sollte.
Um dieses Problem zu lösen, können Sie entweder stark verwenden, die die Referenz für Sie halten würde. Aber, wenn Sie wirklich eine Kopie (für welchen Gründen auch immer), dann können Sie Ihre eigenen Setter schreiben, so etwas wie dieses:
@property (nonatomic) NSMutableDictionary *parameters;
- (void)setParameters:(NSMutableDictionary *)parameters {
_parameters = [parameters mutableCopy];
}
warum Sie verwendet 'copy' –
ist es erforderlich,„copy“? ein Grund für die Verwendung? –
jak überprüfen Sie die Antwort –