I realize that this is similar to an existing post here, What's the Point of (NSError**)error?, but my question is a little different. I understand how the double pointer works, and how this is the common iOS API error pattern. My question is more around the single pointer, and why this code doesn't work:

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

  return YES;
}

implemented using:

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

Why doesn't the assignment in the method implementation reassign the pointer to the new NSError object?

Edit
Report