En un entorno ARC, tengo el siguiente código:Tipo de conversión de Y sí provoca error del compilador
NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:delegate];
[invocation setSelector:@selector(restClient:loadedFile:contentType:eTag:)];
// Error Here!
[invocation setArgument:&self atIndex:2];
[invocation setArgument:&filename atIndex:3];
[invocation setArgument:&contentType atIndex:4];
[invocation setArgument:&eTag atIndex:5];
establecer el argumento de que el índice 2 (&self
) hace que el siguiente error del compilador:
Sending *const __strong * to parameter of type void * changes retain/release properties
No tengo idea de cómo solucionar esto manteniendo un código válido. Por el momento me estoy quedando en NULL
y envolver la declaración de invocación en un bloque try/catch, pero esa es una solución menos que ideal.
Un problema similar, si alguien sería tan amable de hacer frente a ella, así:
Con esta línea de código (de la biblioteca MPOAuth)
status = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, (CFTypeRef *)&attributesDictionary);
me sale el siguiente error
Cast of an indirect pointer to an Objective-C pointer to 'CFTypeRef ' (aka 'const void *') is disallowed with ARC
¿Hay algún motivo particular por el que desee utilizar una Invocación NS en lugar de un bloque aquí? – NSResponder
No estoy seguro, es parte del SDK de Dropbox. Solo estoy haciendo que sea compatible con ARC, tratando de no estropear demasiado el código. – FeifanZ