blob: b9a2fc3634f46efb987126cd572c3939a9ba866b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// Call `[NSObject class]` using `objc::class!` and `objc::selector!`.
//@ edition: 2024
//@ only-apple
//@ run-pass
#![feature(darwin_objc)]
use std::mem::transmute;
use std::os::darwin::objc;
#[link(name = "Foundation", kind = "framework")]
unsafe extern "C" {}
#[link(name = "objc", kind = "dylib")]
unsafe extern "C" {
unsafe fn objc_msgSend();
}
fn main() {
let msg_send_fn = unsafe {
transmute::<
unsafe extern "C" fn(),
unsafe extern "C" fn(objc::Class, objc::SEL) -> objc::Class,
>(objc_msgSend)
};
let static_sel = objc::selector!("class");
let static_class = objc::class!("NSObject");
let runtime_class = unsafe { msg_send_fn(static_class, static_sel) };
assert_eq!(static_class, runtime_class);
}
|