NSError * vs NSError **

Я понимаю, что это похоже на существующий здесь пост, В чем суть ошибки (NSError **)? , но мой вопрос немного другой. Я понимаю, как работает двойной указатель, и как это распространенный образец ошибок API iOS. Мой вопрос больше касается одного указателя и почему этот код не работает:

- (BOOL)someMethodWithError:(NSError *)error
{
  ...
  if( errorOccured )
  {
    NSError *e = [[[NSError alloc] initWithDomain:@"" code:1 userInfo:nil] autorelease];
    error = e;
    return NO;
  }

  return YES;
}

реализовано с использованием:

NSError *error = nil;
if( ![someObj someMethodWithError:error] )
{
  NSLog(@"Error: %@", [error localizedDescription]);
}

Почему назначение в реализации метода не переназначает указатель на новый объект NSError?

8
задан Community 23 May 2017 в 12:33
поделиться