最近,我在Array和Dictionary之间找到了不同的桥接。在下面的代码中,我尝试通过隐式桥接数组和字典来检查正在创建的实例的地址。
如您所见,dic
传递给unsafeAddressOf
方法,该方法打印通过的AnyObject
实例的地址。因为dic
是Dictionary的值,所以当它传递给函数时它将被转换为NSDictionary。因此,这种桥接将成为NSDictionary的新实例。因此,我预计调用两次会导致生成两个NSDictionary实例。但是,打印了相同的地址。似乎只有一个实例。
NSArray的实验似乎在我的假设中运作良好。
为什么他们的工作方式不同?
答案 0 :(得分:0)
无法复制。 unsafeAddressOf
的现代等效词是
Unmanaged.passUnretained(arr).toOpaque()
和
ObjectIdentifier(arr)
,它们每个对象都产生相同的一致地址(需要明确地桥接到AnyObject)。