As was pointed out to me in the bug report, the preferred way to get a pointer 
is to use

Unmanaged.passUnretained(obj).toOpaque()

I see a few issues, though (aside from toOpaque() missing in Xcode 8b1, haven't 
installed b2 yet):

- it is quite a verbose way of something I consider should be trivial - getting 
an address of an object.
- it requires the caller to deal with retain cycle which I don't think should 
be explicit for getting an address of an object.

I'd personally leave it in the language as it feels similar to dynamicType(obj) 
and can be a nice-to-have debugging tool.

The most confusing part about unsafeAddress(of:) is implicit bridging which 
creates a new instance e.g. in case of String, in order to satisfy the 
AnyObject requirement. Fortunately, this will get eliminated by SE-0072 and 
Unmanaged suffered from the same issue, though it required you to specify 
either Unmanaged<NSString> or Unmanaged<AnyObject>.

> On Jul 6, 2016, at 8:03 PM, Jacob Bandes-Storch via swift-evolution 
> <[email protected]> wrote:
> 
> 
> * Remove unsafeAddressOf. "We are not aware of any real use cases for it. If 
> there are any, it should be renamed to unsafeAddress(of:) to follow the 
> guidelines." (https://bugs.swift.org/browse/SR-1957 
> <https://bugs.swift.org/browse/SR-1957> rdar://problem/18589289 <>)
> 
> 
> Oops, I just responded to this on another thread. Pasting:
> 
> It's minor, but I use unsafeAddressOf regularly for writing `description` 
> methods:
> 
>     var description: String {
>         return "<\(self.dynamicType): \(unsafeAddressOf(self))>{ more info 
> here... }"
>     }
> 
> I guess this would be covered by some generalized solution for format 
> specifiers in string interpolations, but I gather that won't happen for quite 
> a while... 
> _______________________________________________
> 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