Ознакомьтесь с правилами памяти на developer.apple.com
Никогда не доверяйте никому, повторяя их как «вы ранее называли copy / alloc / retain» - это не правило, которое фактически говорит что-то вроде «вы получили объект с помощью метода с copy, new или alloc как частью имени». Опять же, не верьте мне, читайте developer.apple.com
Что касается NSError * *, то это просто неправильно. МЕТОД принимает NSError * * в качестве аргумента, то есть указатель на NSError *. Это указатель на NSError *, который будет заполнен адресом NSError, который исходит от где-то , и вы не имеете права предполагать, где.
Вы можете только передать указатель на NSError * - все остальное не так.
Также вы не должны предполагать, что NSError автоматически выпускается. Это может быть синглтон, это может быть любое количество альтернатив. Все, что вам нужно знать, это то, что «вы не сохранили его, вам не нужно его выпускать».