bindgen does not (yet) have full objective-c support but it can generate bindings for a lot of the apple frameworks without too much blacklisting.
In order to generate bindings, you will need -x objective-c as the clang args. If you'd like to use block you will need -fblocks as a clang arg as well.
Depending on your setup, you may need --generate-block to generate the block function aliases and --block-extern-crate to insert a extern crate block at the beginning of the generated bindings. The same logic applies to the --objc-extern-crate parameter.
The objective-c classes will be represented as a struct Foo(id) and a trait IFoo where Foo is the objective-c class and id is an alias for *mut objc::runtime::Object (the pointer to the objective-c instance). The trait IFoo is needed to allow for the generated inheritance.
Each class (struct) has an alloc and a dealloc to match that of some of the alloc methods found in NSObject.
In order to initialize a class Foo, you will have to do something like let foo = Foo(Foo::alloc().initWithStuff()).
I which stands for interface.P which stands for Protocol.struct Foo(id) where Foo is the class name and id is a pointer to the objective-c Object.aarch64-apple-ios, you’ll need to have the clang arg --target=arm64-apple-ios as mentioned here.time.h as has a variable called timezone that conflicts with some of the things in NSCalendar.h.Self for you given class, it returns a mut * objc::runtime::Objc which is aliased as id. This is because objective-c‘s inheritance doesn’t perfectly match that of rusts.bindgen against, you may end up including all of Core Foundation and any other frameworks. This will result in a very long compile time.Options.