Optionals in Swift Objective-C Interoperability
Fabián Cañas (via Zev Eisenberg):
The scroll view property, which should be
nonnull
, or in Swift, not optional, is never given a value on initialization. So what happens when we use if from Swift?[…]
Any Objective-C things we want to do with these objects succeeds, which is nearly everything since they’re Objective-C objects. We’ve entered the territory of undefined behavior. It’s a sort of “Objective-C mode”.
There are things we can do to detect this non-optional nil condition. […] The problem is that since Swift doesn’t think this value can be nil, it’s not trivial to check.
[…]
If you make a Swift extension to the Objective-C class and call them on one of these
nil
things that aren’t supposed to exist, those methods still get called.
I guess this is because methods defined in Swift are by default not dynamic.
Nonnull array properties in Objective-C get bridged to Swift in a very strange way. […] This situation doesn’t look self-consistent. Under some conditions, Swift will create an Array if it doesn’t find one where it’s expected.
Previously:
1 Comment RSS · Twitter
At this point when I’m working with an Obj-c class I tread all the values as nil and do my best to guard and unwrap them