2017-09-14 4 views
1

ich Xcode9 verwende und ich versuchte, die project.Then Ich habe folgendes Problem wieEigenschaft des veränderbaren Typs 'NSMutableDictionary' hat das Attribut 'copy'; ein unveränderliches Objekt gespeichert werden, anstatt

Eigentum von wandelbaren Typ ‚NSMutableDictionary‘ hat ‚Kopie‘ Attribut zu analysieren; ein unveränderliches Objekt wird stattdessen

Bitte gehen Sie durch das Bild gespeichert werden zeigt die Ausgabe

enter image description here

Wie analysieren dieses Problem zu lösen?

+0

warum Sie verwendet 'copy' –

+0

ist es erforderlich,„copy“? ein Grund für die Verwendung? –

+0

jak überprüfen Sie die Antwort –

Antwort

2

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]; 
} 
+0

dann wie Sie verwenden können Sie ein Beispiel hinzufügen –

+0

@ Anbu.Karthik: Ich habe die Antwort bearbeitet –

+1

schätzen bro. –

Verwandte Themen