Идея проста. Предположим, у вас есть большой массив, который всегда должен быть отсортирован. Изменение или вставка хотя бы одного элемента означает, что вам придется прибегнуть к массиву. Сортировка стоит дорого.
Метод -[NSArray sortedArrayHint]
можно вызывать для уже отсортированного массива, чтобы получить частные внутренние данные, которые можно использовать для ускорения сортировки того же массива, учитывая, что было сделано только небольшое изменение.
Простое использование:
- Получить и сохранить подсказку из исходного отсортированного массива, используя
-[NSArray sortedArrayHint]
.
- после небольшого изменения; прибегнуть к помощи
-[NSArray sortedArrayUsingFunction:context:hint:]
с сохраненной подсказкой.
- после большого изменения; используйте
-[NSArray sortedArrayUsingFunction:context:]
и получите новую подсказку.
Что такое маленькое или большое изменение - это то, что вы должны измерить с помощью инструментов.
Я никогда не использую это сам, так как я считаю более эффективным использовать собственные категории в NSArray
и NSMutabelArray
для отсортированных вставок, которые используют бинарный поиск, в отсортированном массиве. Мой код доступен с открытым исходным кодом здесь: https://github.com/Jayway/CWFoundation