Какова максимальная строка, которая может храниться в объекте NSString?
Это динамически изменяется?
Какова максимальная строка, которая может храниться в объекте NSString?
Это динамически изменяется?
Я бы предположил, что жестким пределом для NSString будут символы NSUIntegerMax, поскольку методы NSString и связанные с размером методы возвращают NSUInteger. Поскольку все устройства, которые в настоящее время способны работать с iOS, составляют 32 бит, это означает, что NSUIntegerMax составляет 2 ^ 32 - 1, а NSString может содержать чуть более 4,2 миллиарда символов.
Как отмечали другие, практический предел намного меньше - на устройстве iOS, особенно, у вас не хватит памяти задолго до того, как вы нажмете какой-либо жесткий предел в NSString.
NSString
на самом деле кластер кластера, поэтому вполне возможно, что разные конкретные классы (например, NSString
vs. NSMutableString
) сделают нас из разных "резервных хранилищ" для хранения данных. Вы могли бы даже подклассифицировать NSString
и предоставить свою собственную поддержку хранилища для конкретных потребностей, которые могут возникнуть (посмотрите "Замечания о подклассе" для NSString).
В зависимости от того, какой резервный хранилище фактически используется NSString
, это деталь реализации, которая не документирована Apple, и она может измениться в любое время.
Для себя я предполагаю, что максимальная длина NSString
ограничена доступной памятью. Фактически, поскольку доступная память может быть действительно огромной, будет какой-то другой предел (возможно, связанный с производительностью), но я никогда не подвергался таким ограничениям.
Он может содержать почти столько же памяти, сколько может быть представлен системой виртуальной памяти. Но я лично считаю, что максимальная длина ограничена только той памятью, доступной в то время.