initWithCapacity
приведет к тому, что NSMutableArray
предварительно выделит место для этого количества элементов.
Загрузка большего количества данных в ваш NSMutableArray
сверх этой емкости приведет к NSMutableArray
перераспределению базовой памяти. Это перераспределение также потребует копирования всего массива из старого (меньшего) выделения в новое (большее). Таким образом, существует снижение производительности за то, что это число слишком мало, но не слишком много.
Указание емкости, большей, чем та, которую вы фактически используете, тратит впустую память, поскольку будет выделена память для элементов, которые никогда не будут использоваться.
Я бы порекомендовал, чтобы, если вы знаете, что размер вашего массива обычно не превышает N элементов, вызовите initWithCapacity:N
. Допустимо снижение производительности на NSMutableArray
больше, чем N, и это штраф, который вам не придется платить за те массивы, которые не превышают этот предел.