MCPcopy Create free account
hub / github.com/SSheldon/rust-objc / main

Function main

examples/example.rs:8–45  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6use objc::runtime::{Class, Object};
7
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}

Callers

nothing calls this directly

Calls 4

instance_variablesMethod · 0.80
get_ivarMethod · 0.80
instance_methodMethod · 0.80
return_typeMethod · 0.80

Tested by

no test coverage detected