Различное соединение между массивом и словарем

Недавно я обнаружил различные связи между массивом и словарем. В следующем коде я попытался проверить адрес экземпляра, создаваемого путем неявного соединения Array и Dictionary.

Как вы видете, dic передается unsafeAddressOf метод, который печатает адрес экземпляра AnyObject прошло. Так как dic является значением словаря, поэтому он будет преобразован в NSDictionary при передаче функции. В результате этот мост сделает новый экземпляр NSDictionary. Поэтому я ожидал, что двойной вызов приведет к созданию двух экземпляров NSDictionary. Но, тот же адрес печатается. Кажется, только один экземпляр сделан.

Эксперименты с NSArray, кажется, хорошо работают в моем предположении.

Почему они работают по-другому?

0 ответов

Не могу воспроизвести. Современные аналоги unsafeAddressOf находятся

Unmanaged.passUnretained(arr).toOpaque()

и

ObjectIdentifier(arr)

и они оба дают один и тот же согласованный адрес для каждого объекта (который необходимо явно связать с AnyObject).

Другие вопросы по тегам