TransientAttribute クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
NSObject サブクラス内のパラメーターに一時的なフラグを設定します。
[System.AttributeUsage(System.AttributeTargets.Parameter, AllowMultiple=false)]
public sealed class TransientAttribute : Attribute
type TransientAttribute = class
inherit Attribute
- 継承
-
TransientAttribute
- 属性
注釈
この属性はパラメーターに適用され、Objective-C から C# に移行する場合にのみ使用されます。 これらの遷移中に、さまざまな Objective-C NSObjects パラメーターがオブジェクトのマネージド表現にラップされます。
ランタイムはネイティブ オブジェクトへの参照を受け取り、オブジェクトへの最後のマネージド参照がなくなるまで参照を保持し、GC を実行できます。
場合によっては、C# ランタイムがネイティブ オブジェクトへの参照を保持しないことが重要です。 これは、基になるネイティブ コードが パラメーターのライフサイクルに特別な動作をアタッチした場合に発生することがあります。 たとえば、 パラメーターのデストラクターは、クリーンアップ アクションを実行するか、貴重なリソースを破棄します。
この属性は、上書きされたメソッドから Objective-C に戻るときに、可能であればオブジェクトを破棄することをランタイムに通知します。
ルールは単純です。ランタイムがネイティブ オブジェクトから新しいマネージド表現を作成する必要がある場合、関数の最後にネイティブ オブジェクトの保持カウントが削除され、マネージド オブジェクトの Handle プロパティがクリアされます。 つまり、マネージド オブジェクトへの参照を保持した場合、その参照は役に立たなくなります (その上でメソッドを呼び出すと例外がスローされます)。
渡されたオブジェクトが作成されなかった場合、またはオブジェクトの未処理のマネージド表現が既に存在する場合、強制破棄は行われません。
コンストラクター
TransientAttribute() |
新しい Transient 属性を初期化します。 |