I'm using a library that is not ARC compliant from an ARC based project. A function in that library returns a retained UIImage *
object. Is there a way to use the __bridge
attributes to let ARC know about this so it can manage the retain count of the returned object? I tried:
UIImage *returnedImage;
returnedImage = (__bridge_transfer UIImage *)functionThatReturnsAUIImage();
But it won't allow me to cast the UIImage *
to a UIImage *
). I also tried:
returnedImage = (UIImage *)(__bridge_transfer void *)functionThatReturnsAUIImage();
Which also didn't work. The compiler suggested __bridge_retained
instead of __bridge_transfer
, but that I believe would have done the opposite of what I was after (i.e. it would have increased the retain count on the returned UIImage
object).
I believe the proper thing to do is to make the C function return an autoreleased object. As best as I can tell, ARC assumes any C function that returns an object will have returned an autoreleased object. I have access to the source for this library, so I can do this, but I was wondering if there was a solution I could employ from the calling side if I wasn't able to modify the library.