In terms of language features, mulle_objc resets the basis of Objective-C back to ObjC 1.0 and cherrypicks improvements from the later versions.
Differences to Objective-C 2.0
Do not use the “not planned” features even if the mulle-objc compiler might still understand them. The runtime or the linker will not support them.
|@encode()||supported: 90% the same as the Apple runtime||(what is this ?)|
|@package||never: will produce an error|
|@synchronized()||not planned||(what is this ?)|
|^blocks||not planned: [^3]||(what is this ?)|
|atomic||not planned: atomic as default: never|
|BOOL||supported: but it is an
|@import||not planned||(what is this ?)|
|nullable||not planned: will produce an error [^2]|
|readonly||supported: but an ivar will be synthesized|
||will be a nop #define (also
||could be a nop #define (
|ARC||never: but look for mulle-objc’s AAM||(what is this ?)|
|@implementation()||never: class extension with added instance variables don’t work|
|NSArray<NSString* >||never: generics are not in the cards||(what is this ?|
|ObjectiveC++||never: But the mulle-objc instance memory layout should be
|NSArray *foo; foo[ 1]||not planned: [^1] what is known as “Subscripting”||(what is this ?)|
|Non-fragile ivars||never||(what is this ?)|
|property dot syntax||not planned: [^1]||(what is this ?)|
|variadic arguments (:…)||supported: but not compatible to
[^1] : This is basically operator overloading, which is un-C like.
[^2] : Superflous keyword, ObjC is by design nullable. It only makes sense to adorn non-nullable parameters.
[^3] : GCD is a Apple technology, that really needs kernel support to work well. lambdas are not a part of C11. Generally I find blocks unconvincing. It might be an idea to make
NSInvocations out of block syntax ?
|not supported||might just accidentally work|
|not planned||never say never, but this probably won’t happen|
|never||sometimes you have to say never :)|
For the discussed concepts and terminology check any of the following links.
- Wikipedia: Objective-C
- Apple: Objective-C Feature Availability Index
- NSHipster: @compiler directives
With all the theory under your belt, you’re ready to start your own development.