Как работает NSArray? По сравнению с Java ArrayList - PullRequest
2 голосов
/ 06 декабря 2010

Есть ли способ получить эквиваленты для NSArray по сравнению с Java ArrayList?

Однако то, что я пытаюсь сделать (изучая Objective-C в минуту), имеет NSArray из 6 целых чисел. Позвольте мне «индексировать» в определенную точку этих целых чисел и установить целое число. Затем проверьте, является ли NSArray нулевым или нулевым, если нет, то переберите и выведите целые числа в некоторую метку на экране (пример).

Возможно ли это? Документация не самая лучшая, кажется. Хотя я нахожу учебники Apple по общей разработке iPhone чрезвычайно полезными!

1 Ответ

5 голосов
/ 06 декабря 2010

Для того, что вы хотите сделать, основные различия между реализацией java.util.List и NSArray:

  • Objective-C не имеет "автобокса", поэтому вы не можете просто передать число, подобное 3, в массив и сохранить в нем правильный объект. Вы должны явно обернуть его самостоятельно в экземпляр NSNumber, выполнив [NSNumber numberWithInt:3]
  • любая реализация List может дополнительно реализовывать API .add() и .remove(). В Foundation есть подкласс NSArray, который позволяет изменять его содержимое, который называется NSMutableArray.
  • Objective-C не имеет обобщений, поэтому вы не можете сделать эквивалент List<String>

Кроме этого, List и NSArray очень похожи: каждый является абстрактным, сообщая вам, как вы можете использовать реализующий объект, но не навязывая способ, которым этот объект работает. Например, ArrayList реализован с использованием массива, но NSArray динамически выбирает подходящую реализацию на основе содержимого, которое вы пытаетесь использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...