2011-10-31 12 views
3

Objective-Cまたは他のどの言語で適用されますか?タイプと生涯修飾子の違い

私が本当に求めていることは、__weakconstは同じ分類ですか? __weakconstなどについて話しているときに、タイプのタイプと生涯の修飾子を交換できますか?

+0

例を挙げることができますか? – Shahzeb

+0

私は質問を更新しました。 – Espresso

答えて

5

Cでは、型修飾子は、指定された型に品質(属性、プロパティ)を付与します。 const(読み取り専用、書き込みなし)、volatile(キャッシュなし)、restrict(エイリアスなし)の3種類の修飾子があります。

自動参照カウント(Objective-C用)は、__autoreleasing,__strong__unsafe_unretainedおよび__weakの4つの新しいタイプ修飾子を追加します。 ARCの性質、すなわちメモリ管理の自動化のために、これらの4つのタイプの修飾子は、所有権に関連する属性を付加します。

私が本当に求めているのは、__weakconstは同じ分類ですか?

これらはどちらもタイプ修飾子ですが、__weakは所有者限定子です。

私が__weakconstなどと話しているときに、タイプとライフタイムの修飾語句を交換できますか?

いいえ、それらは互換性がありません。上記のすべての修飾子はタイプ修飾子ですが、ARCによって導入された4つの修飾子はでも所有者修飾子です。

the LLVM projectが金種所有修飾子Apple一方を使用注寿命修飾子代わりに使用しているように見えます。

0

constは、そのライフサイクルにわたってオブジェクトを変更できないように指定します。

__weakは、オブジェクト参照が参照カウントをインクリメントしないことを意味します.ARCを使用している場合、所有していないオブジェクトや循環参照カウントなどの参照カウントを増やしたくないオブジェクトに便利です。 strongはデフォルトになり、参照カウントが変化することを意味します。

+0

問題は '__weak'と' const'の違いではないことに注意してください。代わりに、_type修飾子_と_ownership修飾子という用語についてです。 –