Hay dos nuevos atributos de administración de memoria para las propiedades introducidas por ARC, strongy weak.
Aparte de copy, que obviamente es algo completamente diferente, ¿hay alguna diferencia entre strongvs retainy weakvs assign?
Según tengo entendido, la única diferencia aquí es que weakse asignará nilal puntero, mientras assignque no lo hará, lo que significa que el programa se bloqueará cuando envíe un mensaje al puntero una vez que se haya lanzado. Pero si lo uso weak, esto nunca sucederá, porque el mensaje enviado a nilno hará nada.
No sé acerca de las diferencias entre strongy retain.
¿Hay alguna razón por la que debería usar assigny retainen nuevos proyectos, o están siendo desaprobados?
weaky strong) y 4 calificadores de toda la vida variables ( __strong, __weak, __unsafe_unretained, __autoreleasing). Vea las notas de ARC a continuación.
assignal compilar con ARC fue un error. Hay muchas respuestas eliminadas sobre esto. Parece que fue cambiado antes del lanzamiento final. unsafe_unretainedes el atributo preferido para muchos de los primeros en adoptar. Para comprobar que unsafe_unretainedes un atributo válido, consulte "Programación con Objective-C" de Apple en la sección "Datos encapsulados" bajo el subtítulo "Usar referencias no retenidas inseguras para algunas clases". Que dice: "Para una propiedad, esto significa usar el atributo unsafe_unretained:"
strong,weakyunsafe_unretained.