数组和字典之间的不同桥接

Kyo*_*ang 6 swift

最近,我在Array和Dictionary之间发现了不同的桥接.在下面的代码中,我尝试通过隐式桥接Array和Dictionary来检查正在创建的实例的地址.

在此输入图像描述

如您所见,dic传递给unsafeAddressOf方法,该方法打印AnyObject传递的实例的地址.因为dic是Dictionary的值,所以它在传递给函数时会被转换为NSDictionary.因此,这种桥接将成为NSDictionary的新实例.因此,我预计调用两次会导致生成两个NSDictionary实例.但是,打印了相同的地址.似乎只有一个实例.

NSArray的实验似乎在我的假设中运作良好.

为什么他们的工作不同?

mat*_*att 1

无法重现。现代的等价物unsafeAddressOf

Unmanaged.passUnretained(arr).toOpaque()
Run Code Online (Sandbox Code Playgroud)

ObjectIdentifier(arr)
Run Code Online (Sandbox Code Playgroud)

并且它们都为每个对象产生相同的一致地址(需要显式桥接到 AnyObject)。