> On Aug 23, 2016, at 3:36 PM, Douglas Gregor via swift-evolution > <swift-evolution@swift.org> 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 gpar...@apple.com <mailto:gpar...@apple.com> Runtime Wrangler
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution