Я сказал бы, давайте протестируем его!:)
я попробовал quicksort, но сортировка почти сортирующего массива с quicksort... хорошо, не действительно хорошая идея. Я попробовал измененный, убегающий в 7 элементах и использующий вид вставки для этого. Однако, ужасная производительность. Я переключился на сортировку слиянием. Возможно, требовалась бы довольно большую память для сортировки (это не существует), но производительность намного лучше на сортированных массивах и почти идентична на случайных (начальный вид занял почти то же время для обоих, quicksort был незначительно быстрее).
Это уже показывает одну вещь: ответ на Ваши вопросы зависит сильно от алгоритма сортировки, который Вы используете. Если это будет иметь низкую производительность почти в отсортированных списках, вставление в правильном положении будет намного быстрее, чем добавление в конце и затем обращение он; и сортировка слиянием не могла бы быть никакой опцией для Вас, поскольку, возможно, требовалось бы слишком много внешней памяти, если список огромен. BTW я использовал пользовательскую реализацию сортировки слиянием, это только, использует 1/2 внешнего устройства хранения данных к наивной реализации (которому нужно столько же внешнего устройства хранения данных сколько сам размер массива).
, Если сортировка слиянием не является никакой опцией и quicksort, не никакая опция наверняка, лучшая альтернатива является, вероятно, пирамидальной сортировкой.
Мои результаты: Добавление новых элементов просто в конце и затем обращении массив было несколькими величинами быстрее, чем вставка их в правильном положении. Однако мой начальный массив имел 10 (отсортированных) элементов mio, и я добавлял другой (неотсортированный) mio. Таким образом, если Вы добавляете, что 10 элементов к массиву 10 mio, вставляя их правильно намного быстрее, чем обращение всего. Таким образом, ответ на Ваш вопрос также зависит от того, насколько большой (отсортированный) массив начальной буквы и сколько новых элементов Вы хотите добавить к нему.
Вы не можете изменять содержимое пакета во время работы, у вас нет прав на запись в этот каталог. Я не уверен, что есть способ сделать именно то, что вы хотите.
Я знаю, что вы можете получить свой info.plist как NSDictionary через NSBundle со следующим:
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
оттуда вы можете сделать mutableCopy
из NSDictionary
и задайте в нем значения. При выполнении запросов к ключам вы должны убедиться, что запрашиваете NSDictionary
, а не ваш файл info.plist, но не должно быть сложно инкапсулировать все это в класс, который обрабатывает обе проблемы. для вас.
Что касается непосредственного изменения файла info.plist вашего приложения, там могут быть проблемы (например, если вы измените файл, подпись кода не удастся, и ваше приложение будет считаться поврежденным), хотя я не уверен в это.
Не думаю, что это сработает. [NSBundle mainBundle] имеет указатель на конкретный информационный словарь. Даже если вы возьмете мутирующую копию, NSBundle ничего не узнает о нашем новом портфолио. Кто-нибудь уже пытался?