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
