He leído la transición a notas ARC y todavía tengo un poco de confusión acerca de los atributos de propiedades que debemos/podemos usar ... Podemos usar puntos débiles en lugar de asignar (con la ventaja de que la propiedad se establece en nil si el objeto al que apunta se libera), fuerte en lugar de retener y qué en lugar de copiar? Todavía utilizamos la copia solo o necesitamos combinar fuerte con copia, como property (strong,copy)
.. Tal vez necesito practicar y leer de nuevo el documento porque ARC no es muy claro para mí ...Nuevos atributos de propiedades ARC
Respuesta
El Clang ARC documentation tiene esto que decir:
copia implica __strong la propiedad, así como el comportamiento habitual de la semántica de copia en la incubadora.
En cuanto a los métodos setter costumbre, tiene esto que decir:
la propiedad especificada de una propiedad se conserva en sus metadatos, pero de lo contrario el significado es puramente convencional a menos que la propiedad es sintetizado.
De modo que si implementa sistemas personalizados, usted es responsable de implementar una semántica fuerte o débil en esos sistemas.
La copia es implícitamente fuerte, porque crea una copia y transfiere la propiedad.
Ver esta documentación:
¿Podemos seguir implementando los métodos setter para propiedades débiles y fuertes? Con las propiedades retenidas implementaste métodos setter liberando el obj anterior y reteniendo el obj pasado al setter ... ¿Qué haces en un método fuerte de establecimiento de propiedades, ya que no tienes que usar retener y liberar más ... Cómo debería ser débil y la implementación de los implementadores de propiedades fuertes difiere con el arco, si elige implementarlos? ¿Tal vez la diferencia es el ivar correspondiente que debe ser débil o fuerte? Disculpe si mis preguntas son triviales ... –
- 1. ¿Cuáles son los nuevos calificadores de tipo introducidos con ARC?
- 2. iOS ARC - propiedades débiles y fuertes
- 3. ¿Es demasiado temprano para usar ARC para nuevos proyectos?
- 4. Cómo establecer atributos usando decoradores de propiedades?
- 5. Herencia de atributos personalizados en propiedades abstractas
- 6. Atributos de propiedades personalizadas en Objective-c
- 7. C# Atributos personalizados de las Propiedades
- 8. Cuándo usar atributos en lugar de propiedades?
- 9. forma recomendada para declarar propiedades de delegado con ARC
- 10. En Objective-C con ARC, ¿es cierto que generalmente solo necesitamos especificar atributos no atómicos como propiedades?
- 11. ¿Cuándo se lanzan las propiedades fuertes en ARC en iOS?
- 12. ¿Es necesario self.iVar para obtener propiedades fuertes con ARC?
- 13. Propiedades débiles y fuertes en -viewDidUnload bajo ARC
- 14. ¿Necesito palabras clave ARC para propiedades que no sintetizo?
- 15. ARC, no ARC, y herencia
- 16. Cambio con propiedades y ivars después de la migración de ARC
- 17. ¿Los atributos de compatibilidad de propiedades implementadas automáticamente?
- 18. Cómo añadir atributos a las propiedades de una clase base
- 19. Agregar atributos a las propiedades en el DBML de Linq2Sql
- 20. ARC o no a ARC iphone iOS5
- 21. Visual Studio - nuevos valores de las propiedades "por defecto" para los controles heredados
- 22. Muelle - Sustitución de los valores de las propiedades de los frijoles con los nuevos valores del Archivo de propiedades
- 23. Cuándo usar atributos vs. cuándo usar propiedades en python?
- 24. ¿Es posible restringir los atributos a clase o propiedades?
- 25. realloc() & ARC
- 26. Cómo agregar nuevos atributos de DImension a la dimensión existente a través de BIDS
- 27. conversión de un proyecto que no es ARC a ARC
- 28. ¿Debo seguir configurando las propiedades de IBOutlet en null en viewDidUnload with ARC
- 29. Objective-C ARC propiedades de sólo lectura y aplicación colocador privada
- 30. Propiedades sintetizadas para tipos de datos primitivos que usan ARC: ¿débiles o asignados?
Realmente no entiendo cómo puede implementar una semántica fuerte y débil, ya que no usa retener/liberar como en los ajustadores de propiedades retenidas –
Su instalador necesitaría en última instancia almacenar el objeto puntero en una variable calificada con "__strong" o "__weak". Sin embargo, podría hacer otras cosas también, como ejecutar "[self setNeedsDisplay]". –
Entonces, ¿está diciendo que el ivar que almacenará la variable establecida por el colocador debe declararse como __strong o __weak? –