pub struct ClassDecl { /* 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 ClassDecl
impl ClassDecl
sourcepub fn new(name: &str, superclass: &Class) -> Option<ClassDecl>
pub fn new(name: &str, superclass: &Class) -> Option<ClassDecl>
Constructs a ClassDecl
with the given name and superclass.
Returns None
if the class couldn’t be allocated.
sourcepub fn root(
name: &str,
intitialize_fn: extern "C" fn(_: &Class, _: Sel)
) -> Option<ClassDecl>
pub fn root( name: &str, intitialize_fn: extern "C" fn(_: &Class, _: Sel) ) -> Option<ClassDecl>
Constructs a ClassDecl
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<F>(&mut self, sel: Sel, func: F)where
F: MethodImplementation<Callee = Object>,
pub unsafe fn add_method<F>(&mut self, sel: Sel, func: F)where F: MethodImplementation<Callee = Object>,
Adds a method with the given name and implementation to self. Panics if the method wasn’t sucessfully added or if the selector and function take different numbers of arguments. Unsafe because the caller must ensure that the types match those that are expected when the method is invoked from Objective-C.
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 to self. Panics if the method wasn’t sucessfully added or if the selector and function take different numbers of arguments. Unsafe because 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>(&mut self, name: &str)where
T: Encode,
pub fn add_ivar<T>(&mut self, name: &str)where T: Encode,
Adds an ivar with type T
and the provided name to self.
Panics if the ivar wasn’t successfully added.
sourcepub fn add_protocol(&mut self, proto: &Protocol)
pub fn add_protocol(&mut self, proto: &Protocol)
Adds a protocol to self. Panics if the protocol wasn’t successfully added