Esta respuesta tiene numerosos errores y también está desactualizada. Por favor vea otras preguntas / respuestas y los comentarios.
No atómico
nonatomic
se usa para propósitos de subprocesos múltiples. Si hemos establecido el atributo no atómico en el momento de la declaración, cualquier otro subproceso que desee acceder a ese objeto puede acceder a él y dar resultados con respecto al subprocesamiento múltiple.
Copiar
copy
se requiere cuando el objeto es mutable. Use esto si necesita el valor del objeto tal como está en este momento, y no desea que ese valor refleje los cambios realizados por otros propietarios del objeto. Deberá liberar el objeto cuando haya terminado con él porque está reteniendo la copia.
Asignar
Assign
es algo opuesto a copy
. Al llamar al captador de una assign
propiedad, devuelve una referencia a los datos reales. Por lo general, usa este atributo cuando tiene una propiedad de tipo primitivo (float, int, BOOL ...)
Conservar
retain
es obligatorio cuando el atributo es un puntero a un objeto. El setter generado por @synthesize
retendrá (también conocido como agregar un recuento de retención) el objeto. Deberá liberar el objeto cuando haya terminado con él. Al utilizar la retención, aumentará el recuento de retención y ocupará la memoria en el grupo de liberación automática.
Fuerte
strong
es un reemplazo para el atributo retener, como parte del Conteo de referencia automatizado (ARC) de Objective-C. En el código no ARC es solo un sinónimo de retener.
Este es un buen sitio web para aprender strong
y weak
para iOS 5.
http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1
Débiles
weak
es similar a strong
excepto que no aumentará el recuento de referencias en 1. No se convierte en propietario de ese objeto, sino que solo tiene una referencia a él. Si el recuento de referencia del objeto cae a 0, aunque todavía pueda estar apuntando a él aquí, se desasignará de la memoria.
El enlace anterior contiene información buena sobre débil y fuerte.