Ponteiro duplo como parâmetro de bloco Objective-C

É possível (e em caso afirmativo, seguro) criar / usar um bloco que tome um ponteiro duplo como argumento?

Por exemplo:

- (void)methodWithBlock:(void (^)(NSError **error))block;

Contexto adicional, pesquisa e perguntas:

Estou usando o ARC.Quando eu declaro o método acima e tento chamá-lo, o XCode realiza automaticamente a invocação do meu método da seguinte forma:[self methodWithBlock:^(NSError *__autoreleasing *error) {}]; O que__autoreleasing significa aqui e por que está sendo adicionado? Eu presumo que tenha algo a ver com o ARC.Se esteé possível e seguro, o ponteiro ainda pode ser desreferenciado no bloco como seria em qualquer outro lugar?Em geral, quais são as diferenças importantes entre fazer o que estou descrevendo e simplesmente passar um ponteiro duplo como um parâmetro de método (por exemplo,- (void)methodWithDoublePointer:(NSError **)error;) Que considerações especiais, se houver, devem ser levadas em conta (novamente, supondo que isso seja possível)?

questionAnswers(3)

yourAnswerToTheQuestion