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 
> <[email protected]> wrote:
> 
> 
>> On Jul 20, 2016, at 6:12 AM, Arnold Schwaighofer via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>>> isUniquelyReferencedNonObjC checks that the object is a uniquely referenced 
>>> swift only class. It works on non-@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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to