Контакты хранятся в паре баз данных SQLite на телефоне, поэтому единственными ограничениями являются ограничения, налагаемые SQLite и вычислительной мощностью устройства.
Короткий ответ: маловероятностолкнуться с проблемой, если вы не пытаетесь сделать что-то чрезвычайно крупномасштабное, например, написать приложение для справочника компании для ~ 1,6 млн. сотрудников Индийской железной дороги или захватить всех ~ 200 млн. зарегистрированных избирателей в США.Я создал базу данных со всеми американскими почтовыми индексами и другую с несколькими сопоставлениями для всех английских, немецких, французских и испанских слов из стандартных словарей правописания Linux и не столкнулся с проблемами.Последний имел таблицу с более чем 3 миллионами записей и отлично работает на оригинальном iPhone.
С большей вероятностью вы столкнетесь с ограничениями производительности машины до абсолютного ограничения на количество записей.Например, рассмотрим это на сайте SQLite :
Когда вы запускаете транзакцию в SQLite (что происходит автоматически перед любой операцией записи, которая не входит в явный BEGIN ...COMMIT) движок должен выделить битовый массив грязных страниц в файле диска, чтобы помочь ему управлять журналом отката.SQLite требуется 256 байтов оперативной памяти на каждый 1 МБ базы данных.Для небольших баз данных объем требуемой памяти не является проблемой, но когда базы данных начинают расти в диапазоне нескольких гигабайт, размер растрового изображения может стать довольно большим.Если вам нужно хранить и изменять более нескольких десятков ГБ данных, вам следует рассмотреть возможность использования другого механизма базы данных.
Итак, (если я правильно понял), для базы данных 30G потребуется 7,5 млн.пространства для растровых изображений во время вставки.Это может быть сложно на первом поколении iPhone (кроме того, было только 64M RAM и 16G Flash), но, возможно, хорошо на более поздних моделях с большим объемом памяти.Тем не менее, прежде чем вы перейдете к такому количеству записей, обновление индексов или запрос к их отображению в AddressBook.app может привести к неприемлемой производительности.
Если вы хотите изучить схему AddressBook, создайте один контакт всимулятор, затем в окне терминала:
% cd "~/Library/Applications Support/iPhone Simulator/4.0.2/Library/AddressBook"
% sqlite AddressBook.sqlitedb
sqlite> .schema
Это, однако, отличный пример того, почему вы должны протестировать свое приложение на реальном устройстве, прежде чем отправлять его в магазин.Такое приложение без проблем будет работать в многоядерной многоядерной памяти RAM объемом 4 ГБ на симуляторе 3,0 ГГц, но не очень хорошо на iPod Touch второго поколения с частотой 1/2 ГГц.