Wenn ich die Modellobjekte für meine Entität in CoreData im ARC-Modus erstellen, generiert es stattdessen beibehalten oder stark. Behält er also Arbeit und kompiliert auch im ARC-Modus? Ich dachte, im ARC-Modus können wir keine Freigabe, Autorelease und behalten Keywords?CoreData-Modellobjekte in ARC verwendet behalten
Antwort
Meinst du, dass es eine Erklärung wie folgt erzeugt?
@property (nonatomic, retain) MyObject *object;
Die retain
Eigenschaft Attribut bedeutet strong
unter ARC.
Das ist großartig, aber beantwortet nicht wirklich die Frage, ich mag diesen Typen, der ein Projekt mit ARC erstellt hat, und wenn man Core Data in den Mix einfügt, werden die NSManagedObjects mit Eigenschaften erzeugt, die retain, nicht stark verwenden. Obwohl dies in einem ARC-Projekt nicht zulässig sein sollte, wenn nicht anders angegeben, dass es sich um einen Nicht-ARC-Abschnitt des Projekts handelt, ist dies ein seltsames Ereignis. Es sollte erwartet werden, stark zu verwenden, nicht zu behalten, oder zumindest sollte der Compiler beschweren, dass es ARC-Regeln nicht entspricht ... Alle anderen Gedanken – Daniel
ARC verbietet nicht die Verwendung des Schlüsselwortes 'retain'. Es verbietet die Verwendung des Retain-Selektors. Keywords und Selektoren sind völlig unterschiedlich. Siehe §7.1.1 des Dokuments, das ich verlinkt habe. –
Danke für die zusätzlichen Informationen – Daniel
Bitte überprüfen Sie diese Antwort aus: https://stackoverflow.com/a/10036821/662605
Der Kern davon ist, dass der Code, wenn Sie @synthesize
Ihre Eigenschaften, dann unter der Haube erzeugt wird von der Art retain
verlassen (retain
, assign
, copy
).
generierte Managed Object Unterklassen verwenden @dynamic
nicht @synthesize
, all dieses Zeug auf magische Weise für sie geschehen, also eigentlich, obwohl es verwirrend ist, das retain
Schlüsselwort nicht verwendet wird wie es scheint, also die ARC nicht beschweren .. Ich bin mir ziemlich sicher, dass es das ist.
Obwohl ich habe versucht, die Umsetzung zu tauschen @synthesize
zu verwenden und immer noch keine Fehler bekommen haben, aber ich denke, dass wir mit dieser Antwort auf den Link
Alle anderen Einsichten schön wäre, auf etwas sein könnte.
hmm das ist überraschend, keine Antwort? – theiOSguy