instancia de miembro de la matriz de identificación en ARC
-
26-10-2019 - |
Pregunta
Quiero escribir algo como esto:
@interface Foo{
__strong id idArray[];
}
@end
Pero el compilador se queja de ello:
Field has incomplete type '__strong id []'.
¿Cómo puedo crear una instancia de miembro de la matriz de identificación en ARC? ¿Y cómo inicial esa matriz? ¿Usando malloc? nuevo[]?
No quiero usar NsArray porque estoy convirtiendo una gran biblioteca en ARC y eso causará mucho trabajo.
Solución
Si desea asignar dinámicamente la matriz, use el tipo de puntero de ID __strong.
@interface Foo
{
id __strong *idArray;
}
@end
Asignar la matriz usando Calloc. ID __strong debe intilizarse con cero.
idArray = (id __strong *)calloc(sizeof(id), entries);
Cuando haya terminado, debe configurar nulo en las entradas de la matriz y gratis.
for (int i = 0; i < entries; ++i)
idArray[i] = nil;
free(idArray);
Otros consejos
Tienes que especificar un tamaño de matriz, por ejemplo:
__strong id idArray[20];
O le das a la matriz un tamaño fijo:
__strong id idArray[20];
O usa un puntero y un malloc:
__strong id *idArray;
...
self.idArray = calloc(sizeof(id), num);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow