Sunday, January 15, 2012

implicit conversion of an indirect pointer to an objective-c pointer with ARC


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 comments:

  1. 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.

    ReplyDelete
  2. 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 *.

    ReplyDelete