> On Aug 23, 2016, at 3:36 PM, Douglas Gregor via swift-evolution
> <[email protected]> wrote:
>
> Proposed solution
>
> When an Optional<T> value is bridged to an Objective-C object, if it contains
> some value, that value should be bridged; otherwise, NSNull or another
> sentinel object should be used.
>
I don't think I like this.
Let me verify my understanding. If I have this:
// imported from ObjC
func f(with object: Any)
let s: String? = nil
f(s)
then at runtime it will call
f([NSNull null])
?
The problem is that NSNull is in fact rare in Cocoa. They are used in the
Foundation containers and almost nowhere else. Passing NSNull into almost any
API is going to do something confusing at runtime. If you're lucky you get a
prompt error "-[NSNull something]: unrecognized selector". If you're not lucky
you'll get that error somewhere much later, or something even less obviously
related to NSNull and your call site. That sounds like the wrong outcome for
developers who are confused or careless or unaware of an optional.
--
Greg Parker [email protected] <mailto:[email protected]> Runtime
Wrangler
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution