#[repr(C)]pub struct Object { /* private fields */ }
Expand description
A type that represents an instance of a class.
Implementations§
Source§impl Object
impl Object
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Returns a reference to the ivar of self with the given name.
Panics if self has no ivar with the given name.
Unsafe because the caller must ensure that the ivar is actually
of type T
.
Examples found in repository?
examples/example.rs (line 29)
8fn main() {
9 // Get a class
10 let cls = class!(NSObject);
11 println!("NSObject size: {}", cls.instance_size());
12
13 // Inspect its ivars
14 println!("NSObject ivars:");
15 for ivar in cls.instance_variables().iter() {
16 println!("{}", ivar.name());
17 }
18
19 // Allocate an instance
20 let obj = unsafe {
21 let obj: *mut Object = msg_send![cls, alloc];
22 let obj: *mut Object = msg_send![obj, init];
23 StrongPtr::new(obj)
24 };
25 println!("NSObject address: {:p}", obj);
26
27 // Access an ivar of the object
28 let isa: *const Class = unsafe {
29 *(**obj).get_ivar("isa")
30 };
31 println!("NSObject isa: {:?}", isa);
32
33 // Inspect a method of the class
34 let hash_sel = sel!(hash);
35 let hash_method = cls.instance_method(hash_sel).unwrap();
36 let hash_return = hash_method.return_type();
37 println!("-[NSObject hash] return type: {:?}", hash_return);
38 assert!(hash_return == usize::encode());
39
40 // Invoke a method on the object
41 let hash: usize = unsafe {
42 msg_send![*obj, hash]
43 };
44 println!("NSObject hash: {}", hash);
45}
Sourcepub unsafe fn get_mut_ivar<T>(&mut self, name: &str) -> &mut Twhere
T: Encode,
pub unsafe fn get_mut_ivar<T>(&mut self, name: &str) -> &mut Twhere
T: Encode,
Returns a mutable reference to the ivar of self with the given name.
Panics if self has no ivar with the given name.
Unsafe because the caller must ensure that the ivar is actually
of type T
.
Trait Implementations§
Source§impl Message for Object
impl Message for Object
Source§unsafe fn send_message<A, R>(
&self,
sel: Sel,
args: A,
) -> Result<R, MessageError>
unsafe fn send_message<A, R>( &self, sel: Sel, args: A, ) -> Result<R, MessageError>
Sends a message to self with the given selector and arguments. Read more
Source§fn verify_message<A, R>(&self, sel: Sel) -> Result<(), MessageError>
fn verify_message<A, R>(&self, sel: Sel) -> Result<(), MessageError>
Verifies that the argument and return types match the encoding of the
method for the given selector. Read more
Auto Trait Implementations§
impl Freeze for Object
impl RefUnwindSafe for Object
impl Send for Object
impl Sync for Object
impl Unpin for Object
impl UnwindSafe for Object
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more