Objective-C Features That I Wish Existed
Daniel Lazarenko (via Gianluca Bertani):
The features listed here are chosen to have a relatively small scope in order to be implemented without major changes and in a backwards compatible way in the spirit of Objective-C. Thus they are not meant to turn Objective-C into a modern experimental language like Swift, but should make programming experience better and reduce boilerplate.
[…]
In 2015 Xcode 6.3 introduced nullability annotations to Objective-C. With those you can express an intent that a pointer to an object can never be
nil. Unfortunately the only observable check that the Objective-C compiler does with that is that it prevents you from passing thenilconstant in places where anonnulltype is expected. If you pass in anullablepointer variable (not anilconstant), this is silently allowed[…][…]
Imagine a piece of code that uses a lot of blocks, including nested blocks where on completion you want to do something else asynchronously, so you have to make a second
strongSelf. This pattern becomes boilerplate code! It is possible to shrink the lines by using@weakify/@strongifycustom helper macros, but you still have to write them and have them available in your project.
Update (2018-08-02): Heath Borders:
If you use
-Wnullable-to-nonnull-conversionand nullability annotations on local variables and properties, you get proper warnings when you pass a_Nullableto a_Nonnullparameter or assign a_Nullablervalue to a_Nonnulllvalue.And if you ever need to cast a
_Nullableto a_Nonnull, this is the safe way to do so.
3 Comments RSS · Twitter
the static analyzer gives additional nullability warnings beyond what the compiler gives, IIRC.
Not a bad list. I don't know if everything is needed (I'm not a huge fan of generics), but a decent list nonetheless.