> On Feb 14, 2017, at 10:41 AM, Jeff Kelley via swift-evolution
> <[email protected]> wrote:
>
> On Mon, Feb 13, 2017 at 11:53 PM, Rod Brown <[email protected]
> <mailto:[email protected]>> wrote:
> I think the biggest problem we're going to face with this one is changes to
> Objective-C are out of scope for Swift Evolution. Apple tend to be the ones
> in control of the development of new Objective-C features and compatibility
> because they control the compiler.
>
> I don’t think that Objective-C changes are out of bounds when Swift is
> involved—see my past, accepted proposal at SE-0033
> <https://github.com/apple/swift-evolution/blob/master/proposals/0033-import-objc-constants.md>.
For this kind of change to have a real impact, it needs to affect a significant
number of frameworks that Swift programmers use. Unless there are automatic
heuristics that are *very good*, doing so requires a large amount of manual
labor and coordination. So while it is true that Objective-C changes can be
in-bounds, from a prioritization/impact perspective, they might not be the
right thing to focus on.
> That said, as a request to Apple for this change, I think it's a reasonable
> idea for Ints, but I'm not sure of its feasibility for other types. Could the
> API be descriptive enough to cover enough types? (Eg CGRectNull)
>
> It’s an open-and-shut case for any standard primitive, but structs like
> CGRect are where it starts to get tricky. I see that CGRect conforms to
> Equatable when it’s imported into Swift; perhaps that could be enough for
> this to work? If the translation to and from nil happens in the Swift side, I
> can see Equatable as a reasonable requirement for the type.
In the most general case, one could imagine providing the names of a pair of C
functions to the annotation: one answers the question “is this a nil value?”
and the other can be called to produce a nil value.
- Doug
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution