I found a strange conflict issue between NSScreen and NSProcessInfo. Using both NSProcessInfo.operatingSystemVersion and UIScreen.mainScreen will cause the application to crash with "segmentation fault". But I can't imagine the relation between them.
Minimal Example:
#[macro_use]
extern crate objc;
use cocoa::{appkit::NSScreen, base::nil};
use objc::{runtime::Object};
fn main() {
unsafe {
let ns_process_info = class!(NSProcessInfo);
let process_info: *mut Object = msg_send![ns_process_info, processInfo];
// Deleting either of the following two lines will avoid the crash.
let os_version: *const Object = msg_send![process_info, operatingSystemVersion];
let screen = NSScreen::mainScreen(nil);
}
}
[package]
name = "rsplg"
version = "0.1.0"
edition = "2018"
[dependencies]
cocoa = "0.24"
objc = "0.2.7"
objc-foundation = "0.1"