в этом случае вы обычно хотите объявить копию свойства.
в большинстве случаев неизменяемые средства доступа к коллекции должны быть скопированы, а не сохранены. многие люди понимают это неправильно и заканчивают тем, что пишут много копий вручную и делятся объектами, которыми нельзя делиться, думая, что они делают себя хорошо, сокращая угол.
копирование в этой форме (сборнике) мелкое. объекты в массиве не копируются, только выделение массива.
хорошая реализация неизменяемой коллекции может просто реализовать копию, сохранив self. если аргумент изменчив, вам все равно нужна копия (в большинстве случаев).
Ваша программа упрощается до объявления:
// note: copy, not retain. honor this if you implement the accessors.
@property (nonatomic, copy) NSArray * foodLocations;
и затем установщик:
self.foodLocations = [self returnOtherArray];
Конечно, вы все равно должны правильно инициализировать, освобождать и обрабатывать безопасность потоков.
удачи