Red de conocimiento informático - Conocimientos de programación - Grandes habilidades de programación

Grandes habilidades de programación

¿Cuál es la diferencia entre asignación, copia y retención?

Asignación: Asignación simple, no cambia el recuento de referencias.

Copiar: crea un objeto con un índice de 1 y luego libera el objeto antiguo.

Retener: libera el objeto antiguo, asigna el valor del objeto antiguo al objeto de entrada y luego aumenta el recuento de índice del objeto de entrada a 1.

La diferencia entre débil y fuerte:

La diferencia (débil y fuerte) es que cuando un objeto ya no tiene un puntero fuerte apuntándolo, será liberado, incluso si hay un puntero débil El puntero apunta a él.

Una vez que el último puntero fuerte se vaya, el objeto se liberará y todos los punteros débiles restantes se borrarán.

Quizás haya un ejemplo que pueda describirlo adecuadamente.

Imaginemos que nuestro objeto es un perro, y el perro quiere escapar (ser liberado).

Un pointer fuerte es como un perro con correa. Mientras mantengas al perro atado, el perro no se escapará. Si hay cinco personas sosteniendo a un perro (cinco fuertes señales apuntando a un objeto), el perro no huirá a menos que se suelten las cinco correas.

Un puntero débil es como un niño que señala a un perro y grita: "¡Mira! Hay un perro ahí". Mientras el perro esté atado, el niño puede ver al perro y (el puntero débil) seguirá apuntándolo. Tan pronto como le quiten la correa, el perro se escapará, sin importar cuántos niños lo estén mirando.

Tan pronto como el último puntero fuerte ya no apunte al objeto, el objeto se liberará y todos los punteros débiles se borrarán.

Utilice asignar: para tipos de datos básicos (NSInteger, CGFloat) y tipos de datos c (int, Float, double, char, etc.). )

Usar copiar: para NSString

Usar retener: para otros NSObject y sus subclases.

Palabras clave no atómicas:

Atomic es una tecnología de protección de subprocesos utilizada por Objc. Básicamente, es para evitar que otro hilo lea antes de que se complete la escritura, lo que provocará errores de datos. Y este mecanismo consume recursos del sistema, por lo que en dispositivos pequeños como el iPhone, si no utiliza programación de comunicación entre subprocesos múltiples, no atómico es una muy buena opción.