The class from which all classes that implement an Objective-C class should inherit.
objc
:init-function | |
:pointer |
An optional Objective-C foreign object pointer for the object. |
objc-object-pointer
The abstract class standard-objc-object
provides the framework for subclasses to implement an Objective-C class. Subclasses are typically defined using define-objc-class, which allows the Objective-C class name to be specified. Instances of such a subclass have an associated Objective-C foreign object whose pointer can be retrieved using the objc-object-pointer accessor. The function objc-object-from-pointer can be used to obtain the object again from the Objective-C foreign pointer.
There are two ways that subclasses of standard-objc-object
can be made:
alloc
method. If the init-function initarg is not specified, the object is initialized by calling its init
method. If the init-function initarg is specified, it is called during initialization with the newly allocated Objective-C foreign object and the initargs that were given to make-instance, and it should call the appropriate initialization method for that object and return its result. This allows a specific initialization method, such as initWithFrame:
, to be called if required.allocWithZone:
method (or a method such as alloc
that calls allocWithZone:
). In this case, an instance of the subclass of standard-objc-object
is made with the value of the pointer initarg being a pointer to the newly allocated Objective-C foreign object.
(objc:define-objc-class my-view () () (:objc-class-name "MyView") (:objc-superclass-name "NSView")) (defun my-view-init-function (pointer &key frame) (objc:invoke pointer "initWithFrame:" frame)) (make-instance 'my-view :init-function 'my-view-init-function :frame #(0 0 100 50) :allow-other-keys t)))
Note that :allow-other-keys t
is needed because :frame
is not a known initarg for my-view
.
define-objc-class
objc-object-destroyed
objc-object-from-pointer
objc-object-pointer
LispWorks Objective-C and Cocoa Interface User Guide and Reference Manual - 18 Feb 2025 15:39:48