Type Method

resolveInstanceMethod(_:)

Dynamically provides an implementation for a given selector for an instance method.

Declaration

class func resolveInstanceMethod(_ sel: Selector!) -> Bool

Parameters

name

The name of a selector to resolve.

Return Value

true if the method was found and added to the receiver, otherwise false.

Discussion

This method and resolveClassMethod(_:) allow you to dynamically provide an implementation for a given selector.

An Objective-C method is simply a C function that take at least two arguments—self and _cmd. Using the class_addMethod(_:_:_:_:) function, you can add a function to a class as a method. Given the following function:

void dynamicMethodIMP(id self, SEL _cmd)
{
    // implementation ....
}

you can use resolveInstanceMethod: to dynamically add it to a class as a method (called resolveThisMethodDynamically) like this:

+ (BOOL) resolveInstanceMethod:(SEL)aSEL
{
    if (aSEL == @selector(resolveThisMethodDynamically))
    {
          class_addMethod([self class], aSEL, (IMP) dynamicMethodIMP, "v@:");
          return YES;
    }
    return [super resolveInstanceMethod:aSel];
}

Special Considerations

This method is called before the Objective-C forwarding mechanism is invoked. If responds(to:) or instancesRespond(to:) is invoked, the dynamic method resolver is given the opportunity to provide an IMP for the given selector first.

See Also

Dynamically Resolving Methods

class func resolveClassMethod(Selector!) -> Bool

Dynamically provides an implementation for a given selector for a class method.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software