Двойной указатель как параметр блока Objective-C
Возможно ли (и если да, безопасно) создать / использовать блок, который принимает двойной указатель в качестве аргумента?
Например:
- (void)methodWithBlock:(void (^)(NSError **error))block;
Дополнительный контекст, исследование и вопросы:
Я использую ARC.Когда я объявляю метод выше и пытаюсь вызвать его, XCode автоматически завершает вызов моего метода следующим образом:[self methodWithBlock:^(NSError *__autoreleasing *error) {}];
Что значит__autoreleasing
значит здесь и почему это добавляется? Я предполагаю, что это как-то связано с ARC.Если этоявляется возможно и безопасно, может ли указатель все еще разыменовываться в блоке, как это было бы где-нибудь еще?В общем, каковы важные различия между выполнением того, что я описываю, и простой передачей двойного указателя в качестве параметра метода (например,- (void)methodWithDoublePointer:(NSError **)error;
)? Какие особые соображения, если таковые имеются, следует принимать во внимание (опять же, если предположить, что это вообще возможно)?