У меня есть класс контроллера, в котором хранится список контактов, и мне нужно поделиться этим списком с объектами, которые будут реализовывать KVO в таком массиве.
Наиболее очевидным решением является использование NSArray вместо NSMutableArray, чтобы каждый мог использовать одну и ту же переменную экземпляра контроллера, и невозможно изменить содержимое массива.
Теперь давайте представим, что этот список может меняться каждые 3 минуты, и только контроллер может обновлять содержимое массива.
Если я удаляю и заново запускаю массив списка контактов, все мои объекты KVO потеряют ссылку на мой массив.
Наконец:
NSArray PRO: никто не может изменить содержимое массива
NSArray CON: контроллер не может изменить массив без dealloc, поэтому другие объекты потеряли ссылку.
NSMutableArray PRO: контроллер может изменять содержимое массива, все объекты могут легко использовать одну и ту же ссылку на массив
NSMutableArray CON: каждый может изменять массив.
Есть предложения?