[swift-evolution] [swift-evolution-announce] [Review] SE-0125: Remove NonObjectiveCBase and isUniquelyReferenced

Jaden Geller jaden.geller at gmail.com
Wed Jul 20 11:58:40 CDT 2016


I agree that `isKnownUniquelyReferenced` (with a doc comment about Objective-C) seems like a reasonable solution. It feels bizarre to name Objective-C in a Swift standard library function name. If I recall correctly, Swift on Linux doesn’t interop with Objective-C, so this name feels very out of place there. I’m definitely +1 for any solution that drops this negation from the function name and moves it to the doc comment.

> On Jul 20, 2016, at 9:09 AM, Andrew Trick via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On Jul 20, 2016, at 6:12 AM, Arnold Schwaighofer via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>>> isUniquelyReferencedNonObjC checks that the object is a uniquely referenced swift only class. It works on non- at objc classes but will return false: The API will work for @objc-classes but return false.
>>> 
>>> The reason for this combination is data structures like Array which might hold an objc class which is not mutable. On a mutating operation you check is it uniquely reference and a swift class - if the answer is yes and you have enough storage you store to the current instance.
>>> 
>>> expectTrue(isUniquelyReferencedNonObjc(SwiftKlazz()))
>>> expectFalse(isUniquelyReferencedNonObjc(ObjcKlazz()))
>>> var y = SwiftKlazz()
>>> var z = [Any]
>>> z.append(y)
>>> z.append(y)
>>> expectFalse(isUniquelyReferencedNonObjc(y)
>>> 
>>> The simplification of this proposal just to remove the variant that had the NonObjectiveCBase prerequisite.
>> 
>> 
>> Your critique of the negation still holds though.
>> 
>> So maybe we still rename it from isUniquelyReferencedNonObjC to isUniquelyReferencedSwiftReference?
> 
> What’s the difference between a “SwiftReference” and AnyObject?
> 
> The current name is the literal meaning. The intent of being literal and awkward is to encourage users to read the comments. This isn’t something people should be embedding in their program logic anyway. It’s very special purpose.
> 
> That said, something like “isUniquelyReferencedNativeSwift” would work assuming that’s semantically correct (“native" Swfit objects do not inherit from NSObject). “isKnownUniquelyReferenced” would be fine with a warning in the doc comment that it may always return false for objc objects.
> 
> Andy
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160720/e9cde611/attachment.html>


More information about the swift-evolution mailing list