[swift-evolution] [Review] SE-0058: Allow Swift types to provide custom Objective-C representations

Adrian Kashivskyy adrian.kashivskyy at me.com
Wed Apr 6 04:02:19 CDT 2016

> • What is your evaluation of the proposal?

+1, been a supporter of this idea from the very beginning.

> • Is the problem being addressed significant enough to warrant a change to Swift?

It is when doing hybrid (Objective-C plus Swift) development.

> • Does this proposal fit well with the feel and direction of Swift?

Not with the direction of Swift itself but it certainly helps with the transition from Objective-C.

> • How much effort did you put into your review? A glance, a quick reading, or an in-depth study?

Been following the topic since the beginning.


One thing,

I noticed the proposal includes @warn_unused_result attribute in one of code examples. As this will be removed per SE-0047, I suggest removing the attribute from the proposal code examples.

Pozdrawiam – Regards,
Adrian Kashivskyy

> Wiadomość napisana przez Brent Royal-Gordon via swift-evolution <swift-evolution at swift.org> w dniu 06.04.2016, o godz. 03:08:
> (Sorry, sent without finishing a sentence.)
>>> https://github.com/apple/swift-evolution/blob/master/proposals/0058-objectivecbridgeable.md
>>>  But then, these *are* intended to be full-width type conversions,
>>>  are they not?  Why not these:
>>>    init?(_ source: ObjectiveCType)
>>>    init(_ source: ObjectiveCType?)
>>>  ?  If any of these transformations are wrong, it would good to have
>>>  a rationale as to why.
>> I really don't like these two differing only by the optionality of their argument and return type, especially if they're going to have *no* argument label, which will make them look very attractive. And the unconditional one has many strange semantics—the extra layer of optionality on the argument, the fact that it may *lazily* crash if you access a sub-object which isn't permitted, etc. So I would at least label that one:
>> 	init?(_ source: ObjectiveCType)
>> 	init(forced source: ObjectiveCType?)
>> I'm also a little worried about having an `init?(_:)` when a particular conversion might reasonably always succeed. The lack of a label will imply to users that this is something they can use directly; 
> if the conversion always succeeds, though, it will unnecessarily be returning an optional value. (And from what I can tell, you can't satisfy an optional return value in a protocol with a member having a non-optional return value. Not sure why that is.)
> -- 
> Brent Royal-Gordon
> Architechies
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160406/33946caa/attachment.html>

More information about the swift-evolution mailing list