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 関数はすべて、自動解放されたオブジェクトを返すと想定しています。このライブラリのソースにアクセスできるので、これを行うことができますが、ライブラリを変更できなかった場合に呼び出し側から使用できる解決策があるかどうか疑問に思っていました.