> On Sep 12, 2017, at 9:55 AM, somu subscribe via swift-users 
> <swift-users@swift.org> wrote:
> 
> Hi Quinn,
> 
> Thanks for the reply,
> 
> It is an iOS Swift project (uses Foundation, UIKit, CloudKit and other native 
> frameworks) in which I would like to check the memory address for debugging 
> (and out of enthusiasm). There is no C code I am using.
> 
> I have some asynchronous call back functions from CloudKit frameworks which 
> return CKUserIdentity objects.
> 
> So thought it would be nice if I could print the memory address of 
> CKUserIdentity objects and to check if it was unique.
> 
> And there are some other custom Swift Structs which I would like to know the 
> memory address of.
> 
> Thanks and regards,
> Muthu

For classes, use the Unmanaged API as Quinn’s suggested.

Your structs, tuples, and enums only have an address during mutation. So, for 
example, if you wrap all of your code in a function that takes the variable 
`inout`, you’ll see a consistent address within a single call to that function. 
There’s an implicit cast from `inout` to Unsafe[Mutable]Pointer arguments, so 
you can inspect the pointer value...

func foo(p: Unsafe[Mutable]Pointer) { print(p) }

foo(&s2)

As you noticed, between calls to `foo` you could see a different address.

If you really want to give your structs an “identity” you would need to wrap 
them in a class.

-Andy

>> On 12 Sep 2017, at 10:35 PM, Quinn The Eskimo! via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>> 
>> On 12 Sep 2017, at 13:44, somu subscribe via swift-users 
>> <swift-users@swift.org> wrote:
>> 
>>> 1. Is the above shown the correct way to get reference type memory address ?
>>> 2. What Is it the correct way to get value type memory address ?
>> 
>> It’s hard to answer that without knowing how you’re intended to use these 
>> techniques.  If you can explain more about where you’re going with this, I 
>> should be able to make some specific recommendations.
>> 
>> For example, if you’re goal were to pass a Swift object to a C API that 
>> takes a callback function pointer and a ‘cookie’ value, and hen calls that 
>> function with that cookie (like the `qsort_r` function), the to/from opaque 
>> mechanism provider by `Unmanaged` is the recommended way to pass a Swift 
>> object through such a cookie value.
>> 
>>> 3. Is it possible to get the memory address of immutable value type 
>>> (declared as let)
>> 
>> No, because such values don’t necessarily exist in memory.
>> 
>> Share and Enjoy
>> --
>> Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
>> Apple Developer Relations, Developer Technical Support, Core OS/Hardware
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to