Aquí hay información sobre lo que sé sobre propiedades variables.
- atómico // predeterminado
- no atómico
- fuerte = retener // predeterminado
- débiles
- conservar
- asignar // predeterminado
- unsafe_unretained
- Copiar
- solo lectura
- readwrite // predeterminado
así que a continuación está el enlace del artículo detallado donde puede encontrar todos los atributos mencionados anteriormente, que definitivamente lo ayudarán. ¡¡Muchas gracias a todas las personas que dan las mejores respuestas aquí !!
Atributos de propiedades variables o modificadores en iOS
01. fuerte (iOS4 = retener)
- dice "mantén esto en el montón hasta que ya no lo señale" - en otras palabras "Soy el propietario, no puedes desasignar esto antes de apuntar bien con lo mismo que retener "- Utilice fuerte solo si necesita retener el objeto. - De forma predeterminada, todas las variables de instancia y las variables locales son punteros fuertes. - Generalmente usamos strong para UIViewControllers (los padres del elemento UI) - strong se usa con ARC y básicamente te ayuda, al no tener que preocuparte por el recuento de retención de un objeto. ARC lo libera automáticamente para usted cuando haya terminado con él. Usar la palabra clave fuerte significa que usted es el propietario del objeto.
Ejemplo:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
02. débil (iOS4 = unsafe_unretained)
- dice "mantén esto mientras alguien más lo señale fuertemente" - lo mismo que asignar, no retener o liberar - Una referencia "débil" es una referencia que no retienes. - Generalmente usamos débil para IBOutlets (Childs de UIViewController). Esto funciona porque el objeto hijo solo necesita existir mientras el objeto padre lo haga. - una referencia débil es una referencia que no protege el objeto referenciado de la recolección por parte de un recolector de basura. - Débil es esencialmente asignar, una propiedad no retenida. Excepto cuando el objeto se desasigna, el puntero débil se establece automáticamente en cero
Ejemplo:
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
Explique : Gracias a BJ Homer
Imagine que nuestro objeto es un perro y que el perro quiere huir (ser desasignado). Los punteros fuertes son como una correa para el perro. Mientras tenga la correa atada al perro, el perro no huirá. Si cinco personas atan su correa a un perro, (cinco punteros fuertes a un objeto), entonces el perro no se escapará hasta que las cinco correas estén sueltas. Los punteros débiles, por otro lado, son como niños pequeños señalando al perro y diciendo "¡Mira! ¡Un perro!" Mientras el perro siga con la correa, los niños pequeños aún pueden ver al perro y aún lo señalarán. Sin embargo, tan pronto como se quitan todas las correas, el perro huye sin importar cuántos niños pequeños lo señalen. Tan pronto como el último puntero fuerte (correa) ya no apunte a un objeto, el objeto se desasignará y todos los punteros débiles se pondrán a cero. ¿Cuándo usamos débil? La única vez que querría usar débil es si desea evitar los ciclos de retención (por ejemplo, el padre retiene al hijo y el hijo retiene al padre, por lo que ninguno de los dos se libera).