* Use objc2
* Replace `objc_id`
* Remove sel_impl import
* Fix `add_method` calls
* Fix accessing raw FFI functions
* Fix Encode impl
* Fix message sends arguments that do not implement `Encode`
* Use immutable reference in a few places where now necessary
See https://github.com/madsmtm/objc2/pull/150 for a bit of background
* Add a few Send + Sync bounds where examples require it
This is something we'll need to look into properly
* Use `&'static Class` instead of `*const Class`
Safer and more ergonomic. Also required for `msg_send_id!` macro
* Use msg_send_id! and rc::Id
* Update objc2 to v0.3.0-beta.2
* Replace `BOOL` with `Bool` when declaring delegates
This makes cacao compile on Aarch64 again
* Remove a few impossible to use correctly `into_inner` functions
These consumed `self`, and hence also dropped `Id` variable that was responsible for keeping the returned pointer alive
* Remove a few impossible to use correctly `From` implementations
* Quickly fix UB with using BACKGROUND_COLOR ivar
* Fix double-freeing of windows
* Fix double freeing of strings
* Fix a few remaining double-frees
* Support for all NSEvent types and configurable event monitoring
* Useful mouse event methods
* rustfmt nightly fixes
* Use standard kind naming convention
* Added a bunch of unit tests and added text input to uikit feature
* cargo fmt
* I dunno what this is but it wasnt checked in
* Fix uikit unit tests
* maybe fix cargo fmt
* Fix iOS run
* fix cargo fmt
* Maybe fix cargo fmt
* maybe fix cargo fmt
* cargo fmt
* Try to fix cargo fmt one more time
* cargo fmt
Several recent changes to the way that subclass registration is done
inadvertently impacted part of how the iOS side of things works. iOS
app initialization requires passing known class names to
`UIApplicationMain` to let the system instantiate things; we append a
random suffix to class names by default to avoid issues on macOS where
classes that are being loaded from a bundle seem to collide in the ObjC
runtime.
This change brings in two new methods in `foundation/class` to
explicitly bypass the dynamic subclass suffix generation for the rare
cases (such as the above) where we know we need it.
This can happen in environments like plugins, where cacao can exist multiple times and thus tries to create and register its objc classes more than once.