Различное соединение между массивом и словарем
Недавно я обнаружил различные связи между массивом и словарем. В следующем коде я попытался проверить адрес экземпляра, создаваемого путем неявного соединения Array и Dictionary.
Как вы видете, dic
передается unsafeAddressOf
метод, который печатает адрес экземпляра AnyObject
прошло. Так как dic
является значением словаря, поэтому он будет преобразован в NSDictionary при передаче функции. В результате этот мост сделает новый экземпляр NSDictionary. Поэтому я ожидал, что двойной вызов приведет к созданию двух экземпляров NSDictionary. Но, тот же адрес печатается. Кажется, только один экземпляр сделан.
Эксперименты с NSArray, кажется, хорошо работают в моем предположении.
Почему они работают по-другому?
0 ответов
Не могу воспроизвести. Современные аналоги
unsafeAddressOf
находятся
Unmanaged.passUnretained(arr).toOpaque()
и
ObjectIdentifier(arr)
и они оба дают один и тот же согласованный адрес для каждого объекта (который необходимо явно связать с AnyObject).