iOS5 @property-änderungen
In iOS 5, "retain" und "release" werden nicht mehr unterstützt. Statt "stark" und "schwach" sind dem neuen Weg.
iOS 4 code:
@property(nonatomic, retain)
@property(nonatomic, assign)
iOS-5-code:
???
???
Du musst angemeldet sein, um einen Kommentar abzugeben.
"In iOS 5, behalten release nicht mehr unterstützt." Sind Sie, nur nicht bei der Verwendung von ARC.
Bei der Verwendung von ARC,
-[<NSObject> retain]
ist ein no-op.Für Eigenschaften, die Sie verwenden können
strong
wenn mit ARC aber auch nicht erforderlich (verwenden Sieretain
auch, wenn Sie möchten).strong
undretain
identisch sind:Nur sicherstellen, dass Sie konsistent sind (verwenden Sie nicht beide
strong
undretain
im selben Projekt).-retain
Nachricht, und es ist nicht wirklich ein no-op, da der compiler fügt diese behält und release für Sie. Auchassign
wurde ersetzt durchunsafe_unretained
undweak
.weak
wird empfohlen für Anwendungen für iOS 5.0+. Sie könnenunsafe_unretained
für ältere Anwendungen, aber wie der name schon sagt es ist nicht so sicher wie das automatischnil
-ing schwachen Eigenschaften.Sind Sie nicht genau das gleiche, aber im Grunde
retain := strong
undassign := weak
Ich würde vorschlagen, dass Sie einen Blick auf die ARC Release notes
assign
näherunsafe_unretained
alsweak
. Schwache Eigenschaft Zuordnungen sind ein neues Konzept.nonatomic
Eigenschaft besagt, dass das Objekt nicht thread-sicher, was bedeutet, dass, wenn ein anderer thread versucht Zugriff auf das Objekt als schlechte Dinge passieren kann, aber dies ist viel schneller als Atomare Eigenschaft.strong
mit ARC und die im Grunde hilft Sie , indem Sie nicht mit sorgen über das retain count eines Objektes. ARC automatisch gibt es für Sie, wenn Sie fertig sind.Mit dem Schlüsselwortstrong
bedeutet, dass Sie der Besitzer des Objekts.weak
Eigentum bedeutet, dass Sie nicht besitzen und es einfach weiter verfolgen, das Objekt, bis das Objekt zugewiesen wurde, bleibt , sobald das zweite Objekt ist freigegeben, es verliert an Wert. Für zB.obj.a=objectB;
verwendet wird, und eine schwache Eigenschaft , als Ihr Wert nur gültig bis objectB bleibt in Erinnerung.copy
Eigenschaft ist sehr gut erklärt hier https://stackoverflow.com/a/5002646/919545strong,weak,retain,copy,assign
schließen sich gegenseitig aus, so dass Sie nicht verwenden können Sie auf ein einzelnes Objekt... Lesen Sie den "Deklarierten Eigenschaften" Abschnitt http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1hoffe das hilft dir ein bisschen...