Acabo de convertir un proyecto antiguo a ARC utilizando la refacturación automática de Xcode.Después de la conversión de Auto ARC: asignación de objetos retenidos a propiedades inseguras; objeto se lanzará después de la asignación
@property (nonatomic, retain) NSMutableArray *cards;
fue reemplazado por:
@property (nonatomic) NSMutableArray *cards;
Esto tiene sentido porque lo que he leído es que "fuerte" es el estado por defecto. Sin embargo, la siguiente línea es que me da el error en el título:
self.cards = [[NSMutableArray alloc] initWithCapacity:54];
se resuelve el error añadiendo strong
de vuelta en donde retienen solía ser:
@property (nonatomic, strong) NSMutableArray *cards;
Sin embargo ... si necesito para volver atrás y poner strong
en cada declaración @property que fue retain
... ¿por qué la refactorización de ARC las eliminó todas?
En realidad, la gestión de la memoria semántica por defecto es 'assign', no' strong', razón por la que está recibiendo el mensaje de advertencia. – jlehr
jlehr no es correcto sobre la semántica de gestión de memoria predeterminada. pero tampoco está equivocado. antes de LLVM 3.1 y ARC, se ha asignado el valor predeterminado. pero hoy en día es fuerte. esto desafortunadamente está muy mal documentado. ver la respuesta de nschum. – stigi
Ahora que el valor predeterminado es fuerte, la advertencia debería haber desaparecido. ¿Por qué no? –