Al intentar migrar mi código actual a ARC, recibo errores cada vez que paso un NSString como argumento NSInvocation.NSInvocación y ARC (recuento automático de referencias)
Ejemplo:
NSInvocation inv = ...;
NSString *one = @"Hello World!";
[inv setArgument:&one atIndex:2];
El error se produce cuando se utiliza la Refactor -> Convertir en Objective-C ARC opción en el menú Editar. El texto es "SetArgument de NSInvocation no es seguro para ser utilizado con un objeto con propiedad que no sea __unsafe_retained".
¿Cómo puedo evitar esto?
Esto funcionará, pero debe tener MUCHO cuidado con el manejo de la memoria al respecto. Yo recomendaría no usar NSInvocación más si puede evitarlo ... –
Estoy usando OCMock, y pasa un objeto NSInvocation a sus bloques de devolución de llamada. Si no usa __unsafe_unretained en todos los parámetros, ARC se pone muy infeliz. Así que gracias por la sugerencia, ¡misteriosos accidentes se han ido! – phatmann