По различным причинам, чтобы поддерживать индексы массива в соответствии с другими вещами, у меня есть [NSNull null]
внутри массива. Как это:isEqual: и isKindOfClass: - Что быстрее?
NSArray *arr = @[obj1, obj2, obj3, [NSNull null], obj4];
Есть два способа я рассматриваю возможность использования при переборе массива, чтобы убедиться, я игнорировать значение null
, но я не уверен, что быстрее.
Метод 1
for (id obj in arr) {
if (![[NSNull null] isEqual:obj]) {
//Do stiff
}
}
Метод 2
for (id obj in arr) {
if ([obj isKindOfClass:[MyObject class]]) {
//Do stiff
}
}
Мой вопрос: Так как я итерация через этот массив, чтобы соответствующим образом обрабатывать плиточный вид прокрутки (поэтому она выполняется много раз, когда пользователь прокручивает страницы, и очень важно, чтобы он выполнялся как можно быстрее), , который один из этих методов работает быстрее?
'[NSNull null]' - это одноэлементный объект, и вы можете протестировать с '==' просто отлично – Jack
Вы можете написать небольшой тест и посмотреть сами. Xcode 6 поддерживает этот тип тестирования. – Abizern
@JackWu Как насчет этого SO ответ rmaddy? [Ссылка] (http://stackoverflow.com/a/16600375/1145804) – rebello95