The `NSMethodSignature' class The NSMethodSignature class is used to provide information for accessing the arguments of a method. It is initialized either with an already created encoding of a selector or only with its argument types. For example: id anObject; struct objc_method* mth = class_get_instance_method(self->isa, aSelector); const char* types = mth->method_types; id signature = [NSMethodSignature signatureWithObjCTypes:types]; The above example shows the initialization of a NSMethodSignature object given the complete selector's encoding. The example below shows the initialization of a NSMethodSignature object giving only the method types. This corresponds to a method that has the return type void and has an integer argument. id signature = [NSMethodSignature signatureWithObjCTypes:"v@:i]; Implementation notes For a given machine you must define the following macros: * CUMULATIVE_ARGS * INIT_CUMULATIVE_ARGS * FUNCTION_ARG_ENCODING The name of this macros are the same with the similar ones from the GNU CC compiler. However they don't correspond neither in semantics nor in the argument types. CUMULATIVE_ARGS is the data type of a variable used to hold about arguments processed so far. On a machine where all the arguments are passed on stack, this type is usually `int'. INIT_CUMULATIVE_ARGS should initialize the variable of type CUMULATIVE_ARGS described above. FUNCTION_ARG_ENCODING determines the encoding of the next argument of a method. It must produce a NSString describing the Objective-C encoding and position of the argument in the arguments frame of the method. If you want to determine how to write the encoding for a new machine you could use the program generated by signature-test.pl perl script. This generates a class with a lot of methods. You can look at the output of the program to see how the compiler encodes the methods. Also take a look in the objc-act.c file in the compiler to see how the methods are encoded.