"不透明タイプ"とは何かをよく説明していますか?私はCFBundleRef
の文脈でその言葉を見ました。彼らは「CFBundleRef opaque type」と言っていました。それは読み込み専用のタイプですか?"不透明タイプ"という用語は、 "CFBundleRef opaque type"の意味で何を意味しますか?
答えて
「不透明タイプ」は、struct
またはclass
の完全な定義がないタイプです。コンパイラはあなたが直接使って何をやらせるのに十分な情報を持っていない
// forward declaration of struct in C, C++ and Objective-C
struct Foo;
// forward declaration of class in C++:
class Bar;
// forward declaration of class in Objective-C:
@class Baz;
:C、C++とObjective-Cでは、型は前方宣言を使用することにより、後に定義されるコンパイラに伝えることができますstruct
またはclass
にポインタを宣言しますが、これは頻繁に行う必要があります。これにより、ライブラリとフレームワークの作成者は実装の詳細を隠すことができます。ライブラリまたはフレームワークのユーザは、ヘルパー関数を呼び出して、struct
またはclass
と宣言されたフォワードのインスタンスを作成、操作、破棄します。例えば、フレームワークの作成者はstruct Foo
のため、これらの関数を作成することができます。
struct Foo *createFoo(void);
void addNumberToFoo(struct Foo *foo, int number);
void destroyFoo(struct Foo *foo);
Core Foundationのフレームワークの一環として、AppleはNSString
、NSArray
と不透明型によるCプログラマに利用できるNSBundle
のような一般的なObjective-Cのクラスになります。 Cプログラマは、これらのObjective-Cクラスのインスタンスを作成、操作、破棄するためにポインタとヘルパー関数を使用します。 Appleはこの「フリーダイヤルブリッジ」と呼んでいます。 "CF"接頭辞+クラス名+ "Ref"接尾辞ここで、 "CF"は "Core Foundation"を表し、 "Ref"は "Reference"の略で、ポインタを意味します。
不透明なタイプは、下位レベルのタイプを「ラップする」タイプであり、基礎となる実装が複雑である場合や、内部の動作についてユーザが単純に知る必要がない場合によく使用されます。 Appleはここに不透明タイプに良いページを持っています。たとえば
を、CFStringには、それが文字配列をラップしているため、不透明タイプであるなど、その長さは、そのエンコーディングを維持するが、直接はできません。ユーザーはこれらの値にアクセスできます。むしろ、内部フィールドにアクセスまたは操作し、関連情報をユーザーに返すメソッドを提供します。
これは将来宣言された構造体です。例:
typedef struct CFBundle *CFBundleRef;
"struct CFBundle"の実際の定義がない場合、コードはCFBundleRefポインタ内の何にもアクセスできません。これは不透明です。
- 1. -spec、-type、-opaqueはerlangプログラミングで何を意味しますか
- 2. 「テンプレート」という用語は何を意味しますか?
- 3. レガシーデータベースという用語は何を意味しますか?
- 4. 「メタデータ」という用語は何を意味しますか?
- 5. 「BODMAS」という用語は何を意味しますか?
- 6. 「データベースシーディング」という用語は何を意味しますか?
- 7. タイプの意味は何ですか?
- 8. 「Calli」という用語の意味的推論または意味は何ですか?
- 9. Java 7の「非不透明な値」の意味は何ですか?
- 10. 意味論は何を意味しますか?
- 11. 不明意味(:)アセンブリ命令
- 12. ソフトウェアエンジニアリングにおける用語の透明性の意味
- 13. Spring MVCでformBackingObjectとModelAttributeという用語は何を意味しますか?
- 14. データクラスという用語はどういう意味ですか?
- 15. 「計装」という用語は何を意味していますか?
- 16. 「ローカルオブジェクト変数」という用語は何を意味していますか?
- 17. 「ダーティーオブジェクト」という用語は何を意味していますか?
- 18. 「プロミスベースのHttpクライアント」という用語は何を意味しますか?
- 19. gitのリポジトリという用語は正確に何を意味しますか?
- 20. ProgressDialogで「不確定」とは何を意味しますか?
- 21. NSDecimalAdd() - constの意味は何を意味するのですか?
- 22. C++で「語彙」とは何を意味しますか?
- 23. プログラミング言語でのタイプ化の意味
- 24. 「タイプ」とはElasticsearchの意味ですか?
- 25. ディレクトリ名とは何ですか? 'と '..'という意味で、faDirectoryはどういう意味ですか?
- 26. data-calc-typeとはどういう意味ですか?
- 27. 「劣った」という用語は「劣ったデバッガ」という用語では何を意味しますか?
- 28. 0x0Fは何を意味していますか?そして、このコードはどういう意味ですか?
- 29. 客観的な意味での意味は何ですか?
- 30. タイプ `*`は__vfptrを意味しますか?
非常に印象深い良い答え!ありがとう!! – Thanks
さらにもう1つの質問:フレームワークの作成者は、これらのヘルパー関数を提供するのですか、またはユーザーが作成しますか? – Thanks
フレームワーククリエータがそれらを提供します。 –