Метод, который принимает как NSArray, так и NSMutableArray. - PullRequest
2 голосов
/ 23 декабря 2009

Я хочу создать метод, который может принимать объект NSMutableArray или NSArray.

Я думаю, что могу просто использовать (id) в качестве типа параметра ... или преобразовать NSArray в NSMutableArray перед передачей. Однако я не очень доволен этими решениями.

На других языках я мог бы передать IList или некоторый общий объект, который они оба наследуют от ...

Мне нужно перечислить через массив в моем методе.

Как люди обычно делают это в задаче с?

Ответы [ 4 ]

16 голосов
/ 23 декабря 2009

Взять NSArray. NSMutableArray происходит от NSArray, поэтому, пока вы используете только элементы NSArray (например, перечисление только для чтения), вы будете в безопасности.

Соответствующая документация (с сайта разработчика Apple):

5 голосов
/ 23 декабря 2009

Поскольку NSMutableArray является подклассом NSArray, просто попросите ваш метод принять параметр NSArray. Таким образом, это займет все, что является или является подклассом NSArray.

2 голосов
/ 23 декабря 2009

Используйте NSArray* - NSMutableArray наследует от него, и вы можете повторить оба, как если бы они были NSArray s.

1 голос
/ 23 декабря 2009

Я бы использовал NSArray в качестве параметра, потому что я предпочитаю использовать неизменяемые объекты везде, где это возможно (более слабое связывание), а затем использовать метод -mutableCopy, когда это необходимо, для отправки их в функцию, которая должна модифицировать массив.

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