Если вы создаете новое значение String, то значение строки копируется, когда оно передается функции или методу, или когда оно назначается постоянной или переменной. Типы значений описаны в главе «Структуры и перечисления являются типами значений».

Поведение отличается от NSString в Cocoa. Когда вы создаете экземпляр NSString в Cocoa, вы передаете его в функцию или метод или присваиваете его к переменной, но вы все время передаете или присваиваете ссылку на тот же самый исходный экземпляр NSString. Никакого копирования строки не происходит, если вы только сами это не сделаете.

Копирование значения String в языке Swift позволяет быть уверенным в том, что когда функция или метод передает значение String, то это будет именно то значение строки, независимо откуда оно пришло. Вы можете быть спокойны насчет строки, которая вам передана, что она не будет модифицирована, если только вы сами не модифицируете ее.

Компилятор Swift оптимизирует использование строк так, что копирование строк происходит только тогда, когда это действительно необходимо. А это значит, что вы получаете высокую производительность при работе со строками, как с типами значений.


Просмотренно: 809 раз