Podwójny wskaźnik jako parametr bloku Objective-C
Czy jest możliwe (a jeśli tak, to bezpieczne) utworzenie / użycie bloku, który przyjmuje podwójny wskaźnik jako argument?
Na przykład:
- (void)methodWithBlock:(void (^)(NSError **error))block;
Dodatkowy kontekst, badania i pytania:
Używam ARC.Kiedy deklaruję powyższą metodę i próbuję ją wywołać, XCode automatycznie uzupełnia wywołanie metody w następujący sposób:[self methodWithBlock:^(NSError *__autoreleasing *error) {}];
Co robi__autoreleasing
znaczy tutaj i dlaczego jest dodawany? Przypuszczam, że ma to coś wspólnego z ARC.Jeśli tojest możliwe i bezpieczne, czy wskaźnik nadal może być wyodrębniony w bloku, tak jak w innym miejscu?Ogólnie rzecz biorąc, jakie są ważne różnice między robieniem tego, co opisuję, a zwykłym przekazaniem podwójnego wskaźnika jako parametru metody (np.- (void)methodWithDoublePointer:(NSError **)error;
)? Jakie szczególne względy, jeśli w ogóle, należy wziąć pod uwagę (zakładając, że jest to w ogóle możliwe)?