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 thenil
constant in places where anonnull
type is expected. If you pass in anullable
pointer variable (not anil
constant), 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/@strongify
custom 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-conversion
and nullability annotations on local variables and properties, you get proper warnings when you pass a_Nullable
to a_Nonnull
parameter or assign a_Nullable
rvalue to a_Nonnull
lvalue.And if you ever need to cast a
_Nullable
to 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.