Questa domanda è simile a ios NSError types ma la soluzione descritta non funzionava e credo che non sia proprio quello di cui ho bisogno.L'invio di 'NSError * const __strong *' al parametro di tipo 'NSError * __ autoreleasing *' modifica le proprietà di conservazione/rilascio del puntatore
Ho un metodo che esegue una chiamata asincrona e quindi richiama un blocco di completamento. Quando provo a passare il NSError ** al blocco di completamento, ottengo questo errore:
Sending 'NSError *const __strong *' to parameter of type 'NSError *__autoreleasing *' changes retain/release properties of pointer
Il codice è il seguente: l'errore
+(void) agentWithGUID:(NSString *) guid completion:(void (^)(AKAgentProfile * agentProfile, NSError ** error)) completionBlock
{
dispatch_queue_t requestQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(requestQueue, ^{
NSString * parameterizedUrl = [AKAgentProfileEndPoint stringByAppendingString:guid];
NSURL *url = [NSURL URLWithString:parameterizedUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError * error = nil;
AKAgentProfile * agentProfile = [[[AKAgentFactory alloc] init] agentProfileWithData:data error:&error];
dispatch_async(dispatch_get_main_queue(), ^{
completionBlock(agentProfile,&error);
});
});
}
Hai qualche incomprensione fondamentale di cosa significa puntatore-puntatore contro puntatore. – Andy
Andy: Lo ammetto, mi ci vuole un po 'per capire qualcosa che in seguito risulta essere abbastanza ovvio! –