Class

NSMethodSignature

A record of the type information for the return value and parameters of a method. 戻り値のための型情報およびメソッドのパラメータからなるレコード。

Declaration 宣言

@interface NSMethodSignature : NSObject

Overview 概要

Use an NSMethodSignature object to forward messages that the receiving object does not respond to—most notably in the case of distributed objects. You typically create an NSMethodSignature object using the NSObject methodSignatureForSelector: instance method (in macOS 10.5 and later you can also use signatureWithObjCTypes:). It is then used to create an NSInvocation object, which is passed as the argument to a forwardInvocation: message to send the invocation on to whatever other object can handle the message. In the default case, NSObject invokes doesNotRecognizeSelector:, which raises an exception. For distributed objects, the NSInvocation object is encoded using the information in the NSMethodSignature object and sent to the real object represented by the receiver of the message. NSMethodSignatureオブジェクトを使って、受け手側オブジェクトが応答しないメッセージを転送してください — 特に分散オブジェクトの場合に。あなたは概してNSMethodSignatureオブジェクトをNSObject methodSignatureForSelector:インスタンスメソッドを使って作成します(macOS 10.5以降ではあなたはsignatureWithObjCTypes:も使用できます)。それはそれからNSInvocationオブジェクトを作成するのに使われます、それは引数としてforwardInvocation:メッセージに渡されて、そのメッセージを取り扱える他のオブジェクト何にでも、それの上での発動を送ります。省略時の場合には、NSObjectdoesNotRecognizeSelector:を発動します、それはある例外を発動します。分散オブジェクトに対して、NSInvocationオブジェクトはNSMethodSignatureオブジェクトの中の情報を使ってエンコードされます、そしてメッセージのレシーバによって表される実オブジェクトに送られます。

Type Encodings 型エンコーディング

An NSMethodSignature object is initialized with an array of characters representing the string encoding of return and argument types for a method. You can get the string encoding of a particular type using the @encode() compiler directive. Because string encodings are implementation-specific, you should not hard-code these values. NSMethodSignatureオブジェクトは、あるメソッドに対する戻り型と引数型の文字列エンコーディングを表している文字からなる配列で初期化されます。あなたは、ある特定の型の文字列エンコーディングを@encode()コンパイラ指令を使って取得できます。文字列エンコーディングは実装固有であることから、あなたはこれらの値にハードコードすべきではありません。

A method signature consists of one or more characters for the method return type, followed by the string encodings of the implicit arguments self and _cmd, followed by zero or more explicit arguments. You can determine the string encoding and the length of a return type using methodReturnType and methodReturnLength properties. You can access arguments individually using the getArgumentTypeAtIndex: method and numberOfArguments property. メソッドシグネチャは、メソッド戻り型に対する1つ以上の文字、続けてself_cmd、続けてゼロ個以上の明示的な引数からなります。あなたは、ある戻り型の文字列エンコーディングと長さをmethodReturnTypemethodReturnLengthプロパティを使って判定できます。あなたは、引数に個々にアクセスすることがgetArgumentTypeAtIndex:メソッドとnumberOfArgumentsプロパティを使って可能です。

For example, the NSString instance method containsString: has a method signature with the following arguments: 例えば、NSStringのインスタンスメソッドcontainsString:は、以下の引数でメソッドシグネチャを持ちます:

  1. @encode(BOOL) (c) for the return type @encode(BOOL) (c) 、戻り型に対して

  2. @encode(id) (@) for the receiver (self) @encode(id) (@) 、レシーバ (self) に対して

  3. @encode(SEL) (:) for the selector (_cmd) @encode(SEL) (:) 、セレクタ (_cmd) に対して

  4. @encode(NSString *) (@) for the first explicit argument @encode(NSString *) (@) 、最初の明示的な引数に対して

See Type Encodings in Objective-C Runtime Programming Guide for more information. Type EncodingsObjective-C Runtime Programming Guideにおいてさらなる情報として見てください。

Topics 話題

Creating a Method Signature Object メソッドシグネチャオブジェクトを作成する

Getting Information on Argument Types 引数型に関する情報を取得する

Getting Information on Return Types 戻り型に関する情報を取得する

Determining Synchronous Status 同期状態を判定する

Relationships 関係

Inherits From 継承元

See Also 参照

Invocations さまざまな発動