Colección de citas famosas - Colección de poesías - Una versión ligera del diccionario

Una versión ligera del diccionario

1. Asignación

Assign se utiliza principalmente para modificar tipos de datos básicos, como int, float, NSInteger y CGFloat. No es necesario administrar la memoria almacenada en la pila y los objetos generalmente no están decorados. De lo contrario, se liberará la dirección de memoria del objeto, pero no se liberará el puntero, lo que provocará punteros salvajes.

2. Débil

Débil solo se puede usar para modificar objetos, pero no guarda el objeto y el recuento de referencias no será 1. Esta propiedad opera en tiempo de ejecución. Una vez liberada la memoria puntiaguda (el recuento de referencias es 0), el puntero automáticamente = nulo, que se utiliza principalmente para evitar referencias circulares. Principio débil

3. Fuerte, retenido

Fuerte se utiliza para modificar el objeto y conservarlo, y el recuento de referencias será 1. En circunstancias normales, el objeto señalado no se destruirá y el recuento de referencias se puede reducir configurándolo manualmente en un puntero nulo. Si el recuento de referencias llega a 0, el objeto será destruido. Pasar bajo un arco fuerte equivale a permanecer bajo MRC (retener el arco tiene el mismo efecto que un arco fuerte).

4. Copiar

Similar a fuerte, si el objeto no admite el protocolo NSCopying para ejecutar el método copyWithZone, el efecto es básicamente el mismo que el de fuerte. será 1 y no se copiará ningún objeto nuevo. Por el contrario, copiar se refiere a un nuevo objeto copiado con un recuento de referencias de 1. Se utiliza principalmente para modificar objetos inmutables de tipos mutables, como NSString, NSDictionary y NSArray. Descripción detallada de las copias profundas y superficiales

5. Unsafe_unretained

Unsafe_retain es similar a débil, pero si se libera la memoria, el puntero aún mantiene la dirección anterior y se convierte en un Acceso. a los punteros salvajes fallará, por lo que no es seguro.

Resumen

1, después del recuento débil de referencias de los estudiantes = 1

2 Después del recuento sólido de referencias de los estudiantes 1 = 2.

3. El número de referencia del estudiante después de la reserva es 1 = 3.

4. Después de copiar, el recuento de referencias del estudiante es 1 = 4 // No implemente el método copyWithZone; de ​​lo contrario, el recuento de referencias permanecerá sin cambios en 3, pero el objeto señalado por cyStu no es el estudiante.