A symbol naming the class to define.
A symbol naming a superclass.
A slot description as used by
defclass
.
A class option as used by
defclass
.
The macro
define-objc-class
defines a
standard-class
called
name
which is used to implement an Objective-C class. Normal defclass inheritance rules apply for slots and Lisp methods.
Each
superclass-name
argument specifies a direct superclass of the new class, which can be another Objective-C implementation class or any other
standard-class
, provided that standard-objc-object is included somewhere in the overall class precedence list. The class standard-objc-object is the default superclass if no others are specified.
The
slot-specifier
s are standard
defclass
slot definitions.
The
class-option
s are standard
defclass
class options. In addition the following options are recognized:
(:objc-class-name
objc-class-name
)
This option makes the Objective-C class name used for instances of
name
be the string
objc-class-name
. If none of the classes in the class precedence list of
name
have a
:objc-class-name
option then no Objective-C object is created.
(:objc-superclass-name
objc-superclass-name
)
This option makes the Objective-C superclass name of the Objective-C class defined by the
:objc-class-name
option be the string
objc-superclass-name
. If omitted, the
objc-superclass-name
defaults to the
objc-class-name
of the first class in the class precedence list that specifies such a name or to
"NSObject"
if no such class is found. It is an error to specify a
objc-superclass-name
which is different from the one that would be inherited from a superclass.
(:objc-instance-vars
var-spec
*)
This options allows Objective-C instance variables to be defined for this class. Each var-spec should be a list of the form
where ivar-name is a string naming the instance variable and ivar-type is an Objective-C FLI type. The class will automatically contain all the instance variables specified by its superclasses.
(:objc-protocols
protocol-name
*)
This option allows Objective-C formal protocols to be registered as being implemented by the class. Each protocol-name should be a string naming a previously defined formal protocol (see define-objc-protocol). The class will automatically implement all protocols specified by its superclasses.