




 
A string naming an Objective-C class or a pointer to an Objective-C foreign object.
A string naming the method to invoke.
Arguments to the method.
The function 
invoke
 is used to call Objective-C instance and class methods. If 
class-or-object-pointer
 is a string, then it must name an Objective-C class and the class method named 
method
 in that class is called. Otherwise 
class-or-object-pointer
 should be a foreign pointer to an Objective-C object or class and the appropriate instance or class method named 
method
 is invoked. The value of 
method
 should be a concatenation of the message name and its argument names, including the colons, for example 
"setWidth:height:"
.
Each argument in args is converted to an appropriate FLI Objective-C value and is passed in order to the method. This conversion is done based on the signature of the method as follows:
If the argument is a vector of four elements of the form 
#(
x
 
y
 
width
 
height
)
, the 
x
, 
y
, 
width
 and 
height
 are used to form the rectangle. Otherwise it is assumed to be a foreign pointer to a ns-rect nd is copied.
If the argument is a vector of two elements of the form 
#(
width
 
height
)
, the 
width
 and 
height 
are used to form the size. Otherwise it is assumed to be a foreign pointer to a ns-size and is copied.
If the argument is a vector of two elements of the form 
#(
x
 
y
)
, the 
x
 and 
y
 are used to form the point. Otherwise it is assumed to be a foreign pointer to a ns-point and is copied.
If the argument is a cons of the form 
(
location
 . 
length
)
, the 
location
 and 
length
 are used to form the range. Otherwise it is assumed to be a foreign pointer to a ns-range object and is copied.
The argument should be a foreign pointer to the appropriate struct object and is copied.
If the argument is 
nil
 then 
NO
 is passed, if the argument is 
t
 then 
YES
 is passed. Otherwise the argument must be an integer (due to a limitation in the Objective-C type system, this case cannot be distinguished from the 
signed char
 type).
If the argument is a string then it is converted to a newly allocated Objective-C 
NSString
 object which is released when the function returns.
If the argument is a vector then it is recursively converted to a newly allocated Objective-C 
NSArray
 object which is released when the function returns.
If the argument is 
nil
 then a null pointer is passed.
Otherwise the argument should be a foreign pointer to an Objective-C object of the appropriate class.
The argument is coerced to an Objective-C class pointer as if by coerce-to-objc-class. In particular, this allows strings to be passed as class arguments.
If the argument is a string then it is converted to a newly allocated foreign string which is freed when the function returns.
Otherwise the argument should be a foreign pointer.
other integer and pointer types
All other integer and pointer types are converted using the normal FLI rules.
When the method returns, its value is converted according to its type:
A vector of four elements of the form 
#(
x
 
y
 
width
 
height
) 
is created containing the rectangle.
A vector of two elements of the form 
#(
width
 
height
) 
is created containing the size.
A vector of two elements of the form 
#(
x
 
y
) 
is created containing the point.
A cons of the form 
(
location
 . 
length
) 
is created containing the range.
Other structures cannot be returned by value using invoke. See invoke-into for how to handle these types.
If the value is 
NO
 then 
0
 is returned, otherwise 
1
 is returned. See also invoke-bool.
An object of type objc-object-pointer is returned.
The value is converted to a string and returned.
other integer and pointer types
All other integer and pointer types are converted using the normal FLI rules.