11
votes

I'm Working on a project that uses ARC and I am having trouble with an existing piece of code that I already had.

heres the code:

- (id)initWithError:(NSError **)error
{
    if ((self = [super init]))
    {
        errorPointer =  error; //Getting error here
    }

    return self;
}

Im getting an error that says:

implicit conversion of an indirect pointer to an objective-c pointer to 'NSError' is disallowed with ARC.

What should I do to fix this problem? I've tried doing a bridged cast, but didn't work. Any help is appreciated.

Oh and just for clarification, in the .h file this is how I declared the variable errorPointer:

NSError *errorPointer;

Thanks!

2

2 Answers

10
votes

It should be

errorPointer = *error; // no error here

The two variables differ by a level of indirection (simply speaking, the number of stars in their declaration is not the same). You need to add an * in front of the error to offset the extra * of the errorPointer.

1
votes

errorPointer and error have mismatched types.

Based on the code you have there, it seems like your error argument should just be declared as NSError *.