Я заметил, что оба array[index]
и [array objectAtIndex:index]
работают с изменяемыми массивами. Может ли кто-нибудь объяснить разницу между ними? с точки зрения производительности, и какой из них является наилучшей практикой?В чем разница между массивом [index] и [array objectAtIndex: index]?
ответ
Отсутствует. Это часть clang extensions for objective-c literals, добавленная 2-3 года назад.
также:
Массив-Стиль индексация
Когда нижний индекс операнд имеет интегральный тип, выражение переписано, чтобы использовать один из двух различных селекторов, в зависимости от того, элемента читается или записывается. Когда выражение считывает элемент с использованием интегрального показателя, как в следующем примере:
NSUInteger idx = ...; id value = object[idx];
Это переводится в вызова
objectAtIndexedSubscript:
id value = [object objectAtIndexedSubscript:idx];
Когда выражение записывает элемент, используя интеграл индекс:
object[idx] = newValue;
переводится на призыв
setObject:atIndexedSubscript:
[object setObject:newValue atIndexedSubscript:idx];
Эти сообщения отправляются затем проверяются и выполняются так же, как явное сообщение . Метод, используемый для
objectAtIndexedSubscript:
, должен быть объявлен с аргументом целочисленного типа и возвращаемым значением некоторого Тип указателя объекта Objective-C. Метод, используемый дляsetObject:atIndexedSubscript:
, должен быть объявлен с его первым аргументом , имеющим некоторый тип указателя Objective-C, и его второй аргумент, имеющий целочисленный тип .
До Xcode 4.4, objectAtIndex: был стандартным способом доступа к элементам массива. Теперь он также доступен через синтаксис подстроки квадратной скобки.
Ему нечего было с Xcode. Это связано с версией clang - компилятором Objective-C.И дело не в доступе к стандартным массивам. Речь идет о доступе к объектам в NSArray. – rmaddy
Технически, синтаксис array[index]
разрешает вызов метода -objectAtIndexedSubscript:
в массиве. Для NSArray
это задокументировано как идентичное -objectAtIndex:
.
Механизм субтитров может быть распространен на другие классы (включая ваши собственные). Теоретически такой класс мог бы сделать что-то другое для -objectAtIndexedSubscript:
, чем для -objectAtIndex:
, но это было бы плохой дизайн.
- 1. В чем разница между CREATE INDEX и CREATE UNIQUE INDEX?
- 2. В чем разница между массивом и массивом?
- 3. В чем разница между `Array` и` Array() `?
- 4. В чем разница между FULLTEXT и FULLTEXT KEY/INDEX?
- 5. В чем разница между UNIQUE INDEX и UNIQUE KEY?
- 6. В чем разница между «git add» и «git update-index»
- 7. MySQL: разница между `... ADD INDEX (a); ... ADD INDEX (b); `и` ... ADD INDEX (a, b); `?
- 8. Mongo sum array index
- 9. Разница между -> withIndex ($ index) и -> with ('index', $ index) в Laravel
- 10. В чем разница между общим массивом и общим значением?
- 11. Objective-C Index Array
- 12. разница между * (Pointer + Index) и указатель []
- 13. Array Object at Index Ошибка
- 14. В чем разница между массивом и объектом?
- 15. разница между objectAtIndex и [0]
- 16. В чем разница между массивом и литеральным массивом в Smalltalk?
- 17. В чем разница между массивом [1] [2] и массивом [1,2]?
- 18. $ _Session Array unidentified index
- 19. Associative & Index Array
- 20. INDEX MATCH array
- 21. Javascript array + index
- 22. Push index array
- 23. SAS Index on Array
- 24. Array Combine Preservation Index
- 25. php array undefined index
- 26. JSON Array Index Order
- 27. В чем разница между массивом и списком
- 28. В чем разница между массивом и ArrayList?
- 29. В чем разница между матрицей и массивом?
- 30. В чем разница между словарем и массивом?
нет отличие характеристики мудрый. это просто разница в синтаксисе между C и Objective C –
@Osama в этом случае, который не является синтаксисом массива C. Это современный синтаксис Objective-C для доступа к элементу из NSArray. – rmaddy
Нотация, использующая '[]' в «знакомом» (для программистов C) пути, является относительно новой. Есть некоторые различия в деталях piddlin между этим и 'objectAtIndex', но для всех целей и задач они одинаковы. –