The Objective-C interface uses types in the same way as the LispWorks FLI, with a restricted set of FLI types being used to describe method arguments and results. Some types perform special conversions to hide the FLI details (see Special argument and result conversion and Special method argument and result conversion).
Objective-C defines its own memory management, so most interaction with its objects occurs using foreign pointers with the FLI type descriptor objc-object-pointer. When an Objective-C object class is implemented in Lisp, there is an additional object of type standard-objc-object which is associated with the foreign pointer (see Defining Objective-C classes and methods).
There are a few specific Objective-C pointer types that have a direct translation to FLI types:
Other pointer types are represented using the :pointer
FLI type descriptor as normal.
When using pointers to struct types, the type must be defined using define-objc-struct rather than fli:define-c-struct
.
The various integer types in Objective-C have corresponding standard FLI types. In addition, the Objective-C type BOOL
, which is an integer type with values NO
and YES,
has a corresponding FLI type objc-bool with values nil
and t
.
Structures in Objective-C are like structures in the FLI, but are restricted to using other Objective-C types for the slots. The macro define-objc-struct must be used to define a structure type that is suitable for use as an Objective-C type.
LispWorks Objective-C and Cocoa Interface User Guide and Reference Manual - 21 Mar 2017