NSInvocation is an Objective-C message rendered static, that is, it is an action turned into an object.
NSInvocation objects are used to store and forward messages between objects and between applications, primarily by
NSTimer objects and the distributed objects system.
- iOS 2.0+
- macOS 10.0+
- tvOS 9.0+
- watchOS 2.0+
NSInvocation object contains all the elements of an Objective-C message: a target, a selector, arguments, and the return value. Each of these elements can be set directly, and the return value is set automatically when the
NSInvocation object is dispatched.
NSInvocation object can be repeatedly dispatched to different targets; its arguments can be modified between dispatch for varying results; even its selector can be changed to another with the same method signature (argument and return types). This flexibility makes
NSInvocation useful for repeating messages with many arguments and variations; rather than retyping a slightly different expression for each message, you modify the
NSInvocation object as needed each time before dispatching it to a new target.
NSInvocation does not support invocations of methods with either variable numbers of arguments or
union arguments. You should use the
invocationWithMethodSignature: class method to create
NSInvocation objects; you should not create these objects using
This class does not retain the arguments for the contained invocation by default. If those objects might disappear between the time you create your instance of
NSInvocation and the time you use it, you should explicitly retain the objects yourself or invoke the
retainArguments method to have the invocation object retain them itself.