He hecho un poco de trabajo con iOS, por lo que podría cubrir los conceptos básicos. Ayuda fuerte y débil con ciclos de retención de liberación (RRC), una forma de pérdida de memoria. iOS usa algo llamado Conteo automático de referencia (ARC) para saber cuándo un objeto está en uso y debe mantenerse en la memoria, o ya no está en uso y debe eliminarse para recuperar recursos. ARC funciona porque el tiempo de ejecución sabe para cada objeto cuántos objetos lo están haciendo referencia. Cuando eso encontrado llega a 0, el objeto se elimina.
Los problemas surgen cuando tiene dos objetos que contienen referencias entre sí. Debido a que el objeto A contiene una referencia al objeto B, y B a A, el recuento de referencia para A y B nunca será 0, este A y B siempre estarán en la memoria. También es posible que no haya otros objetos con referencias a A o B, por lo que acabamos de crear una pérdida de memoria.
Volviendo a Fuerte y Débil, estas palabras clave se utilizan para “denotar la propiedad”, por así decirlo. Le ayudan a eliminar los ciclos de retención y liberación al limitar qué objetos incrementan el recuento de referencia para otro objeto. Una propiedad fuerte es aquella en la que incrementa el recuento de referencia del objeto. Si el objeto A tiene una fuerte referencia a B, y ningún otro objeto hace referencia a B, B tiene el recuento 1 (A posee o necesita existir B). Ahora, si B quiere tener una referencia a A, nos gustaría usar una referencia débil . Las referencias débiles no incrementan el recuento de referencias del objeto. Entonces, en este caso particular, si A no tiene ningún otro objeto que lo haga referencia, excepto B, el recuento de A sería 0 dada la débil referencia de B.
- ¿Cómo detectas si un iPhone está roto?
- ¿Cuál es el mejor libro para aprender a desarrollar aplicaciones iOS?
- El iPhone de Apple cumple 10 años, ¿qué ha significado para ti?
- ¿Cuáles son los aspectos positivos y negativos de la fragmentación del dispositivo causada por el iPhone 5?
- ¿Alguna ventaja / desventaja de dar equidad a la empresa de desarrollo en la construcción de una versión beta de su producto?
¿Puedes ver cómo esto está eliminando el RRS? Suponiendo que no haya referencias externas y que no use referencias fuertes / débiles, A y B residirían perpetuamente en la memoria. Usando las referencias fuertes y débiles que describimos anteriormente, A tendría el recuento 0, por lo que se eliminaría de la memoria. Esto, a su vez, reduciría el recuento de referencias de B de 1 a 0, haciendo que B se elimine de la memoria.
Nonatomic se usa para denotar que el objeto al que se hace referencia no es seguro para subprocesos. Esto significa que el objeto no puede manejar múltiples solicitudes al mismo tiempo. La atomicidad es la idea de que una vez que realiza una solicitud, sucede o no. Cuando una operación es atómica, usted garantiza que la entidad a la que está aplicando la operación nunca estará en un estado intermedio . Independientemente de cómo se mire esa entidad, se ve de la misma forma que antes de solicitar la operación, o se ve de la misma manera una vez que se realiza la operación. (Al pensar en la atomicidad , piense en los átomos. La palabra significa indivisible. Las operaciones atómicas son aquellas que no se pueden dividir en operaciones más pequeñas).
¡Hay otros atributos de propiedad, esta página (http://rypress.com/tutorials/obj…) probablemente tenga una mejor explicación que la mía!