Объекты Objective-C на самом деле не "простые", поэтому 50 000 из них будут довольно требовательными. Напишите свое собственное на простом C или C ++, если вы хотите избежать узких мест и потребностей в ресурсах среды выполнения Objective-C.
Довольно длительное и не теоретическое обсуждение накладных расходов, связанных с удобством:
http://www.cocoabuilder.com/archive/cocoa/35145-nsarray-overhead-question.html#35128
И простая математика для простых людей:
Все, что требуется для создания объекта в отличие от структуры, - это один указатель в начале.
Допустим, это правда, и предположим, что мы работаем в 32-битной системе с 4-байтовыми указателями.
4 байта x 50000 объектов = 200000 байтов
Это почти 200 МБ дополнительной памяти, которая нужна вашим данным внезапно только потому, что вы использовали Objective-C. Теперь соедините это с тем фактом, что независимо от того, какой NSArray вы добавляете, эти объекты к удваивают это, сохраняя свой собственный набор указателей на эти объекты, и вы просто жуете 400 МБ ОЗУ, чтобы вы могли использовать пара удобных оберток.
Обновите мою память здесь ... Файлы подкачки на жестких дисках работают так же быстро, как и ОЗУ? Сколько оперативной памяти есть в iPhone? Сколько вызовов функций и стековых фреймов требуется, чтобы отправить объекту сообщение? Почему IOKit не написан на Objective-C? Сколько из ведущих приложений Apple, которые используют DSP, используют AppKit? У кого-нибудь есть копия otool, с которой они могут проверить? Я вижу ноль здесь.