Iosassign, débil, fuerte y otros atributos y recuento de referencias.
Assign se utiliza principalmente para modificar tipos de datos básicos, como int, float, NSInteger, CGFloat, etc. No es necesario administrar la memoria almacenada en la pila y, por lo general, el objeto no se modifica. De lo contrario, se liberará la dirección de memoria del objeto, pero no se liberará el puntero, lo que provocará punteros salvajes.
2. Debilidad
La debilidad solo se puede usar para modificar objetos, pero no contiene 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. Esto es principalmente para evitar referencias circulares. Principio débil
3. Fuerte, retener
Fuerte se usa para modificar un objeto y retenerlo, y el recuento de referencia 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. Un arco fuerte equivale a retener bajo MRC (retener tiene el mismo efecto sobre el arco que fuerte).
4. Copiar
Similar a fuerte, si el objeto no admite el protocolo NSCopying y ejecuta el método copyWithZone, el efecto es básicamente el mismo que el de fuerte. será 1 y los nuevos objetos no se copiarán. Por el contrario, copiar se refiere a un nuevo objeto copiado con un recuento de referencias de 1, que se usa principalmente para modificar objetos inmutables de tipos variables, como NSString, NSDictionary, NSArray, etc. 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 vuelve Sin salvaje. punteros, el acceso 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.Recuento de referencias de estudiantes reservadas 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 permanece sin cambios en 3, pero el objeto señalado por cyStu no es un estudiante.