我正在使用基于 ARC 的项目中不符合 ARC 的库。该库中的函数返回一个保留UIImage *
对象。有没有办法使用__bridge
属性让 ARC 知道这一点,以便它可以管理返回对象的保留计数?我试过了:
UIImage *returnedImage;
returnedImage = (__bridge_transfer UIImage *)functionThatReturnsAUIImage();
但它不允许我将UIImage *
a 转换为UIImage *
)。我也试过:
returnedImage = (UIImage *)(__bridge_transfer void *)functionThatReturnsAUIImage();
这也没有奏效。编译器建议__bridge_retained
代替__bridge_transfer
,但我相信这样做会与我所追求的相反(即它会增加返回UIImage
对象的保留计数)。
我相信正确的做法是让 C 函数返回一个自动释放的对象。据我所知,ARC 假定任何返回对象的 C 函数都将返回一个自动释放的对象。我可以访问这个库的源代码,所以我可以这样做,但我想知道如果我无法修改库,是否有可以从调用方使用的解决方案。