2012-06-01 11 views
10

Cuando creo los objetos modelo para mi entidad en CoreData en modo ARC, genera retener en lugar de fuerte. Entonces, ¿retiene trabajo y compila en modo ARC también? Pensé en el modo ARC que no podemos usar liberación, liberación automática y retención de palabras clave.Objetos de modelo CoreData en ARC utiliza retener

+0

hmm esto es sorprendente, ¿no hay respuesta? – theiOSguy

Respuesta

4

¿Quiere decir que genera una declaración @property como esta?

@property (nonatomic, retain) MyObject *object; 

El atributo de propiedad retain significa strong bajo ARC.

4.1.1. Property declarations

+1

Eso es genial, pero realmente no responde la pregunta, me gusta que este tipo haya creado un proyecto usando ARC, y al agregar Datos básicos en la mezcla, los objetos NSManagedObjects se generan con propiedades que usan retener, no fuerte. Si bien esto no debería ser legal en un proyecto ARC a menos que se especifique lo contrario como una sección que no es ARC del proyecto, esta es una ocurrencia extraña. Debería esperarse que use strong no retener, o al menos el compilador debería quejarse de que no coincide con las reglas de ARC ... Cualquier otra idea – Daniel

+10

ARC no prohíbe el uso de la palabra clave 'retain'. Prohibe el uso del selector 'retener'. Las palabras clave y los selectores son totalmente diferentes. Ver §7.1.1 del documento que he vinculado. –

+0

Gracias por la información adicional – Daniel

4

Por favor, echa un vistazo a esta respuesta: https://stackoverflow.com/a/10036821/662605

El quid de la cuestión es que si @synthesize sus propiedades, a continuación, el código generado bajo el capó se basará en el tipo retain (retain, assign, copy).

subclases de objetos gestionados generado usa @dynamic no @synthesize, todo esto sucede por arte de magia para usted, así que en realidad, aunque es confuso, la palabra clave retain no se utiliza lo que parece, por lo tanto, la ARC no se queja .. Estoy bastante seguro de que es eso.

Aunque traté de cambiar la puesta en práctica de utilizar @synthesize y aún así no tener errores, pero creo que podría ser en algo con esa respuesta en el enlace

Cualesquiera otros puntos de vista sería agradable.

Cuestiones relacionadas