En iOS 5, "mantener" y "liberar" no se admiten más. En cambio, "fuerte" y "débil" son la nueva forma.IOS5 @property cambia
iOS 4 código:
@property(nonatomic, retain)
@property(nonatomic, assign)
iOS 5 código:
???
???
En iOS 5, "mantener" y "liberar" no se admiten más. En cambio, "fuerte" y "débil" son la nueva forma.IOS5 @property cambia
iOS 4 código:
@property(nonatomic, retain)
@property(nonatomic, assign)
iOS 5 código:
???
???
"En iOS 5, retener la liberación no se admiten más" Lo son, simplemente no cuando se usa ARC.
Cuando se usa ARC, -[<NSObject> retain]
es un no-op.
Para las propiedades, puede usar strong
si usa ARC pero eso no es obligatorio (también puede usar retain
si lo desea). strong
y retain
son idénticos:
@property(nonatomic, strong)
@property(nonatomic, assign)
Sólo asegúrese de que usted es constante (no usar tanto strong
y retain
en el mismo proyecto).
Ellos no son exactamente lo mismo, pero básicamente retain := strong
y assign := weak
que sugeriría un vistazo a las ARC Release notes
En realidad, 'assign' está más cerca de' unsafe_unretained' que 'weak'. Las asignaciones de propiedades débiles son un concepto nuevo. –
También tenga en cuenta que débil no funcionará para tipos primitivos como int. Tienes que usar asignar. –
nonatomic
estados de la característica de que el objeto no es hilo de seguridad que significa que si un subproceso diferente intenta acceder a este objeto que cosas malas pueden suceder, pero esto es mucho más rápido que la propiedad atómica.
strong
se utiliza con ARC y que básicamente le ayuda, al no tener que preocuparse de la cuenta de retención de un objeto. ARC lo libera automáticamente cuando haya terminado con él. Usar la palabra clave strong
significa que posee el objeto.
weak
propiedad significa que usted no es el propietario y solo hace un seguimiento del objeto hasta que el objeto al que se le asignó se mantenga, tan pronto como se libera el segundo objeto, pierde valor. Por ej. obj.a=objectB;
se usa y tiene una propiedad débil, de lo que su valor solo será válido hasta que el objeto B permanezca en la memoria.
copy
propiedad está muy bien explicado aquí https://stackoverflow.com/a/5002646/919545
strong,weak,retain,copy,assign
son excluyentes entre sí por lo que no se pueden utilizar en un solo objeto ... leer la sección "propiedades declaradas" de http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1
esperanza de que esto ayude que un poco ...
Por cierto, el equipo de Objective-C hizo para ser compatible con el código antiguo esto. –
¿Alguna razón seria para no usar ambos elementos fuertes/retener juntos? ¿Es solo una cuestión de legibilidad? –
@craig básicamente. Creo que puede ser confuso para las personas nuevas en ARC. –