IMTL4CommandEncoder インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このインターフェイスは、Objective-C プロトコル MTL4CommandEncoderを表します。
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")]
public interface IMTL4CommandEncoder : IDisposable, ObjCRuntime.INativeObject
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")]
[ObjCRuntime.UnsupportedSimulator("ios")]
public interface IMTL4CommandEncoder : IDisposable, ObjCRuntime.INativeObject
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")]
[ObjCRuntime.UnsupportedSimulator("tvos")]
public interface IMTL4CommandEncoder : IDisposable, ObjCRuntime.INativeObject
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")>]
type IMTL4CommandEncoder = interface
interface INativeObject
interface IDisposable
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")>]
[<ObjCRuntime.UnsupportedSimulator("ios")>]
type IMTL4CommandEncoder = interface
interface INativeObject
interface IDisposable
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4CommandEncoder", WrapperType=typeof(Metal.MTL4CommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterQueueStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterQueueStages:beforeStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterStages:beforeQueueStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BarrierAfterEncoderStages", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLStages), typeof(Metal.MTLStages), typeof(Metal.MTL4VisibilityOptions) }, Selector="barrierAfterEncoderStages:beforeEncoderStages:visibilityOptions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UpdateFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="updateFence:afterEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitForFence", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLFence), typeof(Metal.MTLStages) }, Selector="waitForFence:beforeEncoderStages:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="InsertDebugSignpost", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="insertDebugSignpost:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EndEncoding", Selector="endEncoding")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandBuffer", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandBuffer", PropertyType=typeof(Metal.IMTL4CommandBuffer), Selector="commandBuffer")>]
[<ObjCRuntime.UnsupportedSimulator("tvos")>]
type IMTL4CommandEncoder = interface
interface INativeObject
interface IDisposable
- 派生
- 属性
- 実装
注釈
このインターフェイス (およびサブクラス NSObject) を実装するクラスは、このインターフェイスが表す Objective-C プロトコルの実装として Objective-C にエクスポートされます。
クラスは、プロトコルのメンバーを実装するために、このインターフェイスのメンバーを実装することもできます。
プロパティ
| 名前 | 説明 |
|---|---|
| CommandBuffer |
このインターフェイスは、Objective-C プロトコル |
| Handle |
アンマネージ オブジェクト表現へのハンドル (ポインター)。 (継承元 INativeObject) |
| Label |
このインターフェイスは、Objective-C プロトコル |
メソッド
| 名前 | 説明 |
|---|---|
| BarrierAfterEncoderStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
このインターフェイスは、Objective-C プロトコル |
| BarrierAfterQueueStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
このインターフェイスは、Objective-C プロトコル |
| BarrierAfterStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
このインターフェイスは、Objective-C プロトコル |
| EndEncoding() |
このインターフェイスは、Objective-C プロトコル |
| InsertDebugSignpost(String) |
このインターフェイスは、Objective-C プロトコル |
| PopDebugGroup() |
このインターフェイスは、Objective-C プロトコル |
| PushDebugGroup(String) |
このインターフェイスは、Objective-C プロトコル |
| UpdateFence(IMTLFence, MTLStages) |
このインターフェイスは、Objective-C プロトコル |
| WaitForFence(IMTLFence, MTLStages) |
このインターフェイスは、Objective-C プロトコル |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetHandle(INativeObject) |
このインターフェイスは、Objective-C プロトコル |
| GetNonNullHandle(INativeObject, String) |
このインターフェイスは、Objective-C プロトコル |