это просто захват указателя в объект String?
Ставлю на то, что там преобразование т.к. есть еще второй параметр encoding... https://stackoverflow.com/questions/38478888/complexity-of-string-operations-in-swift И вот я бенчмаркал разные вью, utf16 был самый быстрый, хотя смутно помню смотрел в исходниках, что оно не всегда хранило в одном представлении данные, там какая-то сложная внутренняя логика. Когда нужна была скорость, я в итоге делал свой класс работающий с массивом байт...
Просто хотелось бы иметь простую возможность передать указатель на строку в объект строки, и работать уже с ней через API строки без копирований. У меня строка аллоцируется в С И задать ей кастомный custom deleter, чтобы вызвать free когда ARC посчитает, что объект больше не нужен
я боюсь оно так не умеет. боюсь наврать, но там было что-то из серии для коротких строк храним в одном виде, иначе в другом, плюс еще бриджинг в обжси. лучше в исходниках посмотреть, потому что я много лет назад копался и уже не помню =(
Тебе наверное имеет смысл заглянуть в исходники String, Date, а также SwiftNIO's ByteBuffer, чтобы посмотреть, как оно там происходит. Несмотря на value семантику, эти объекты гораздо сложнее устроены внутри, эта семантика — исключительно для "наружного" применения.
Еще посмотри на Substring. Это slice от String без выделения собственной памяти и копирования. Т.е. своего рода "указатель" на области внутри String. Вот, например, инициализатор: Substring(cString: UnsafePointer<CChar>) Дока: https://developer.apple.com/documentation/swift/substring
О, а вот это может сработать
Причем даже прямо из коробки. Но это неточно.
Обсуждают сегодня