私は現在、CFSetCreateMutable()
で作成されたNSMutableSet
を探しています。ドキュメントでは、戻り値CFSetCreateMutable()
はフリーダイヤルです。つまり、NSMutableSet
にキャストするだけです。これは、release
メッセージを送信することが完全に有効であることを意味しますか? NSクラスを使ってalloc
であるかのようにいつも私がいつもそのようなオブジェクトを扱うことができると私はいつも思っていますか?フリーダイヤルブリッジオブジェクト、保持および解放
1
A
答えて
7
は、[[NSMutableSet alloc] init]と同じことを想像してください。というのも、完了したらオブジェクトを解放する必要があるからです。 ARCを使用している場合は、ブリッジキャストを使用して、CFMutableSetをNSMutableSetにキャストできます。(__bridge_transfer NSMutableSet *)theCFSet
。これは、範囲外になった後にセットをリリースすることをARCに指示します。
1
ドキュメントでは、CFSetCreateMutable()の戻り値はフリーダイヤルです。つまり、単純にNSMutableSetにキャストできます。これは、リリースメッセージを送信することが完全に有効であることを意味しますか?
はい。 This is explicitly guaranteed in the docs:
注意メモリ管理機能および方法はまた、Core FoundationのオブジェクトとのCocoaオブジェクトと
release
とautorelease
でCFRelease
を使用することができ、あなたが交換可能であることを例から。
アム私は常に安全は、彼らはNS-クラスを経由してalloc'edたかのように、私はいつもこのようなオブジェクトを扱うことができることを前提としていますか?
そうでもない:現在、CFTypeとNSObjectの間に共通して存在するもの、など-description
/CFCopyDescription
、関係なく、あなたがオブジェクトを作成したかの動作しますが、それらはすべて、明示的に同じように動作することを保証していませんメモリ管理メッセージがあります。
関連する問題
- 1. 保持/解放の問題
- 2. スレッドセーフな保持/解放
- 3. 保持/解放 - 参照数
- 4. プロパティを持つメモリの保持/解放
- 5. 解析および保存するクラス
- 6. 自動解放プール。排水と保持
- 7. カスタムUITableViewCellの、自動解放およびその他の方法
- 8. ARC、ペン先のファイル、およびトップレベルの解放が
- 9. メモリーフェンス:取得/ロードおよび/ストアを解放
- 10. PHPデコードBase64、リフレッシュおよび保持データ
- 11. 線形および放射状のグラデーションミックスシェーダ
- 12. ADO.NET(およびEntityFramework)がデータベースを解放するようにする
- 13. インテル64およびIA-32 |獲得/解放の意味を含むアトミック操作
- 14. 保存およびイオン2
- 15. ZFデータベースセッションの使用、保護、理解、および取得方法
- 16. 保持されているプロパティを解放する方法
- 17. 混乱を保持して解放しますか?
- 18. READ COMMITTED分離レベルでロックを保持/解放するとき
- 19. 保持されたオブジェクトのメモリを解放する方法
- 20. 保持/解放カウントの問題。明確化が
- 21. JQuery Mobile/Webkit - リフレッシュおよびバックボタンイベント後のDomステートの保持
- 22. シリアライズおよび圧縮されたオブジェクトをメモリ内に保持
- 23. WinFormsデザイナ:サブオブジェクトのプロパティを変更(および保持)
- 24. RESTサービス(JAX-RS)でデータを保持および更新
- 25. XMLファイルの解釈および操作
- 26. 解析、変更およびエリクシール
- 27. Java圧縮および解凍バイト[]チャンク
- 28. Android:TabLayout、ViewPager、フラグメント、およびアダプターの理解
- 29. オーディオストリーミング、NSTimer、およびJSONシナリオの解析
- 30. 解析用XMLおよびストア
基本的に、フリーダイヤルのブリッジとは、「すべての目的と目的で同等」を意味しますか?ニース!悲しいことに、私はiOS 4に展開する必要があるので、私はARCを使用できません。ああ、メモリ管理の面倒な作業をするならば、少なくともそれをもっと深く理解することになります。 C++!) –