Diese Frage ist ähnlich wie ios NSError types aber die dort beschriebene Lösung hat nicht funktioniert und ich glaube, es ist nicht genau was ich brauche.Senden 'NSError * const __strong *' an Parameter vom Typ 'NSError * __ Autoreleasing *' Änderungen beibehalten/freigeben Eigenschaften von Zeiger
Ich habe eine Methode, die dauert führt einen asynchronen Aufruf und ruft dann einen Abschlussblock. Wenn ich versuche, die NSError ** zum Abschluss Block zu passieren, bekomme ich diesen Fehler:
Sending 'NSError *const __strong *' to parameter of type 'NSError *__autoreleasing *' changes retain/release properties of pointer
Der Code ist wie folgt:
+(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);
});
});
}
Sie haben ein grundlegendes Missverständnis darüber, was Pointer-to-Pointer vs. Pointer bedeutet. – Andy
Andy: Ich gebe zu, es dauert eine Weile, bis ich etwas herausgefunden habe, das sich später als ziemlich offensichtlich herausstellt! –