Я хочу создать метод, который может принимать объект NSMutableArray
или NSArray
.Метод, который принимает NSArray и NSMutableArray
Я думаю, что могу просто использовать (id) в качестве типа параметра ... или преобразовать NSArray
в NSMutableArray
перед прохождением. Однако я не очень доволен этими решениями.
В других языках я мог бы передать IList
или какой-то общий объект, который они оба наследуют от ...
мне нужно перечислить через массив в моем методе.
Как люди обычно делают это в объективном c?
действительно, это то, что я бы сделал на самом деле –
Это фактическая вещь, называемая принципом подписи Лискова - в любом месте, где вы можете использовать тип, вы должны иметь возможность использовать один из своих подтипов. Таким образом, любая функция, использующая NSObject (например, методы 'keep' и' release'), может принимать NSString, функция, использующая NSString, может принимать NSMutableString и т. Д. Фактически, NSArrays, который вы используете, - это * никогда * прямые экземпляры NSArray - они фактически являются экземплярами частного подкласса, и он «просто работает» из-за принципа подстановки. – Chuck