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

如您所见,dic传递给unsafeAddressOf方法,该方法打印AnyObject传递的实例的地址.因为dic是Dictionary的值,所以它在传递给函数时会被转换为NSDictionary.因此,这种桥接将成为NSDictionary的新实例.因此,我预计调用两次会导致生成两个NSDictionary实例.但是,打印了相同的地址.似乎只有一个实例.
NSArray的实验似乎在我的假设中运作良好.
为什么他们的工作不同?
无法重现。现代的等价物unsafeAddressOf是
Unmanaged.passUnretained(arr).toOpaque()
Run Code Online (Sandbox Code Playgroud)
和
ObjectIdentifier(arr)
Run Code Online (Sandbox Code Playgroud)
并且它们都为每个对象产生相同的一致地址(需要显式桥接到 AnyObject)。
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |