Encapsulates an Objective-C message (method call) that can be stored and invoked later. Supports variable arguments and MetaABI.
NSObject
NSMethodSignature *_methodSignature; // Method type information
char *_storage; // Argument storage
char *_sentinel; // Storage bounds check
char _argumentsRetained; // Arguments retention flag
char _returnValueRetained; // Return value retention flag
+invocationWithMethodSignature:
- Creates invocation from signature+mulleInvocationWithTarget:selector:
- Creates with target/selector+mulleInvocationWithTarget:selector:object:
- Creates with single argument+mulleInvocationWithTarget:selector:metaABIFrame:
- Creates with MetaABI frame-getArgument:atIndex:
- Gets argument value-setArgument:atIndex:
- Sets argument value-retainArguments
- Retains object arguments-argumentsRetained
- Checks if arguments retained-target
- Gets target object-setTarget:
- Sets target object-selector
- Gets selector-setSelector:
- Sets selector-invoke
- Invokes on current target-invokeWithTarget:
- Invokes on specified target-getReturnValue:
- Gets return value-setReturnValue:
- Sets return value-mulleRetainReturnValue
- Retains return value-mulleReturnValueRetained
- Checks if return value retained-mulleIntReturnValue
- Gets integer return value// Create invocation
NSMethodSignature *sig = [target methodSignatureForSelector:@selector(doWork:)];
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:target];
[inv setSelector:@selector(doWork:)];
// Set arguments
id arg = @"data";
[inv setArgument:&arg atIndex:2]; // 0=self, 1=_cmd, 2=first arg
// Retain arguments if needed
[inv retainArguments];
// Invoke
[inv invoke];
// Get return value
id result;
[inv getReturnValue:&result];