Почему массив не является присваиваемым Повторяемому?

Вам просто нужно поместить этот код в cellForRowAtIndexPath

Чтобы отключить свойство выбора ячейки: (При касании ячейки).

cell.selectionStyle = UITableViewCellSelectionStyle.None
175
задан Joachim Sauer 2 February 2010 в 14:45
поделиться

4 ответа

Массивы могут реализовывать интерфейсы ( Cloneable и java.io.Serializable ). Так почему бы не Iterable ? Я предполагаю, что Iterable заставляет добавлять метод итератора , а массивы не реализуют методы. char [] даже не отменяет toString . В любом случае массивы ссылок следует считать не идеальными - используйте List s. Как отмечает dfa, Arrays.asList выполнит преобразование за вас явно.

(Сказав это, вы можете вызвать clone для массивов.)

72
ответ дан 23 November 2019 в 20:27
поделиться

К сожалению, массивы не являются " классом -достаточно ». Они не реализуют интерфейс Iterable .

Хотя массивы теперь являются объектами, реализующими Clonable и Serializable, я считаю , что массив не является объектом в обычном смысле , и не реализует интерфейс.

14
ответ дан 23 November 2019 в 20:27
поделиться

Массивы должны поддерживать Iterable , но они просто этого не делают по той же причине что массивы .NET не поддерживают интерфейс, допускающий произвольный доступ только для чтения по положению (такого интерфейса не определено как стандарт). По сути, в фреймворках часто есть досадные небольшие пробелы, которые никому не стоит исправлять. Не имело бы значения, если бы мы могли исправить их сами оптимальным образом, но часто мы не можем.

ОБНОВЛЕНИЕ: Чтобы быть объективным, я упомянул массивы .NET, не поддерживающие интерфейс, поддерживающий произвольный доступ по должности (см. также мой комментарий). Но в .NET 4.5 этот интерфейс определен и поддерживается массивами и классом List :

IReadOnlyList<int> a = new[] {1, 2, 3, 4};
IReadOnlyList<int> b = new List<int> { 1, 2, 3, 4 };

Все еще не совсем идеально, потому что интерфейс изменяемого списка IList не наследует IReadOnlyList :

IList<int> c = new List<int> { 1, 2, 3, 4 };
IReadOnlyList<int> d = c; // error

Может быть, есть проблема с обратной совместимостью с таким изменением.

Если есть какой-либо прогресс в подобных вещах в новых версиях Java, мне было бы интересно узнать об этом в комментариях! :)

16
ответ дан 23 November 2019 в 20:27
поделиться

Массив является Объектом, но его элементы могут им и не быть. Массив может содержать примитивный тип типа int, с которым невозможно справиться. По крайней мере, я так считаю.

57
ответ дан 23 November 2019 в 20:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: