Я новичок в программировании на Objective-C и, работая над примером, я заметил кое-что любопытное в полиморфизме:
// I know the message should have been mutableCopy, but this is how I came to find
// this ... anomaly
NSMutableArray *arrayCopy = [self.array copy];
[arrayCopy replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:2]];
Этот код компилируется, однако при запуске приложения происходит сбой.сообщение о том, что arrayCopy не распознает сообщение replaceObjectAtIndex: withObject:.
Мой вопрос заключается в том, почему эта компиляция вообще должна создаваться (и она не генерирует предупреждение / проблему при анализе)?Учитывая, что NSMutableArray наследуется от NSArray, как может быть допустимым присвоение arrayCopy возвращенному NSArray?
Заранее спасибо.