Struct objc2::declare::ClassBuilder
source · pub struct ClassBuilder { /* private fields */ }
Expand description
A type for declaring a new class and adding new methods and ivars to it before registering it.
Implementations§
source§impl ClassBuilder
impl ClassBuilder
sourcepub fn new(name: &str, superclass: &Class) -> Option<Self>
pub fn new(name: &str, superclass: &Class) -> Option<Self>
Constructs a ClassBuilder
with the given name and superclass.
Returns None
if the class couldn’t be allocated, or a class with
that name already exist.
sourcepub fn root<F>(name: &str, intitialize_fn: F) -> Option<Self>where
F: MethodImplementation<Callee = Class, Args = (), Ret = ()>,
pub fn root<F>(name: &str, intitialize_fn: F) -> Option<Self>where F: MethodImplementation<Callee = Class, Args = (), Ret = ()>,
Constructs a ClassBuilder
declaring a new root class with the
given name.
Returns None
if the class couldn’t be allocated.
An implementation for +initialize
must also be given; the runtime
calls this method for all classes, so it must be defined on root
classes.
Note that implementing a root class is not a simple endeavor!
For example, your class probably cannot be passed to Cocoa code unless
the entire NSObject
protocol is implemented.
Functionality it expects, like implementations of -retain
and
-release
used by ARC, will not be present otherwise.
sourcepub unsafe fn add_method<T, F>(&mut self, sel: Sel, func: F)where
T: Message + ?Sized,
F: MethodImplementation<Callee = T>,
pub unsafe fn add_method<T, F>(&mut self, sel: Sel, func: F)where T: Message + ?Sized, F: MethodImplementation<Callee = T>,
sourcepub unsafe fn add_class_method<F>(&mut self, sel: Sel, func: F)where
F: MethodImplementation<Callee = Class>,
pub unsafe fn add_class_method<F>(&mut self, sel: Sel, func: F)where F: MethodImplementation<Callee = Class>,
Adds a class method with the given name and implementation.
Panics
Panics if the method wasn’t sucessfully added or if the selector and function take different numbers of arguments.
Safety
The caller must ensure that the types match those that are expected when the method is invoked from Objective-C.
sourcepub fn add_ivar<T: Encode>(&mut self, name: &str)
pub fn add_ivar<T: Encode>(&mut self, name: &str)
Adds an ivar with type T
and the provided name.
Panics
If the ivar wasn’t successfully added for some reason - this usually happens if there already was an ivar with that name.
sourcepub fn add_static_ivar<T: IvarType>(&mut self)
pub fn add_static_ivar<T: IvarType>(&mut self)
sourcepub fn add_protocol(&mut self, proto: &Protocol)
pub fn add_protocol(&mut self, proto: &Protocol)
sourcepub fn register(self) -> &'static Class
pub fn register(self) -> &'static Class
Registers the ClassBuilder
, consuming it, and returns a reference
to the newly registered Class
.