initWithCapacity: в NSArray - PullRequest
       7

initWithCapacity: в NSArray

9 голосов
/ 01 октября 2009

initWithCapacity: объявлено в NSMutableArray, но я хочу использовать его для инициализации NSArray. Есть ли какое-нибудь решение?

Ответы [ 3 ]

10 голосов
/ 01 октября 2009

Поскольку NSArray объекты являются неизменяемыми (не могут изменять содержащиеся в них объекты), нет смысла регулировать емкость NSArray с.

Емкость - это количество объектов, которые массив может содержать без перераспределения памяти. Используется только для оптимизации.

6 голосов
/ 01 октября 2009

Не имеет смысла инициировать NSArray, используя initWithCapacity:, потому что вы не можете впоследствии добавлять объекты. NSArray без объектов де-факто имеет емкость 0. Чего вы на самом деле пытаетесь достичь?

5 голосов
/ 01 октября 2009

Просто сделайте NSMutableArray с initWithCapacity:, заполните его материалом, а затем сделайте из него NSArray.

Вы можете использовать либо:

NSArray *_immutableArray = [_mutableArray copy];
...
[_immutableArray release];

Или:

NSArray *_immutableArray; 
[_immutableArray initWithArray:_mutableArray];
...
[_immutableArray release];

Или:

NSArray *_immutableArray = [NSArray arrayWithArray:_mutableArray];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...