> On Jul 20, 2016, at 3:13 AM, Brent Royal-Gordon <[email protected]> 
> wrote:
> 
>> On Jul 19, 2016, at 11:06 PM, Dmitri Gribenko via swift-evolution 
>> <[email protected]> wrote:
>> 
>> - I find it a little strange to see a mention of Objective-C, and a
>> negation in `isUniquelyReferencedNonObjC`.  For example, if we get C++
>> import, would we need to rename it to
>> `isUniquelyReferencedNonObjCAndNonCXX`?  I think that is the issue
>> with negation.  If we want to emphasize that the API will work only
>> with Swift types, we can do something
>> `isUniquelyReferencedSwiftReference`.  But I would probably suggest
>> that we just go with just `isUniquelyReferenced` and mention the
>> Swift-only requirement in the documentation.
> 
> I agree.
> 
> What is the reason that isUniquelyReferenced(_:) doesn't work with 
> Objective-C? It doesn't seem like it'd be difficult to implement—you'd either 
> call -retainCount, or get it from the Objective-C runtime somehow, and then 
> test it against 1—so I assume there's a reason we don’t


Also, see my answer to Dmitri.

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. (You can’t store to an NSArray for 
example, you would have to check it was a NSMutableArray, etc …)


> I ask because knowing that may help us figure out how to name it. For 
> instance, if the issue is that we can't rely on Objective-C reference counts, 
> we might reverse the sense of the call and name it `mayBeShared(_:)` or 
> `mayHaveOtherReferences(_:)`.
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 

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

Reply via email to