ARC を使用して CFRelease を使用しない場合、代替手段は何ですか。ARC を使用すると、CFRelease がエラーをスローします。
2 に答える
コード内で一部の Core Foundation と Objective-C のオブジェクトを交換可能に使用しようとしているように思えますが、コードを見ないと何が起こっているのかわかりません。ただし、まだ気づいていない場合に備えて、言及する必要がある非常に重要な説明があります。
ARC は、Objective-C オブジェクトのメモリのみを自動的に管理するため、呼び出す必要がなくなりましたrelease
。したがって、ARC はCore Foundation オブジェクトのメモリを自動的に管理しませんCFRelease()
。
に代わるものはありませんCFRelease
。CFRelease
ARCかどうかに関係なく必要です。ARC は ObjC オブジェクトのみを管理します。
場合によっては、フレームワークが特定のタイプ (例: CGContextRelease
) に特化したリリースを提供することがありますが、実際には代替手段はありません。
CFRelease
を渡すのはエラーであると述べていますNULL
。それが表示されるエラーであり、この動作が望ましくない場合は、渡す前に最初にパラメーターをテストする独自のラッパー関数をいつでも作成できます。
より具体的なエラーまたはより具体的な問題がある場合は、さらにサポートできる場合があります。