Я думаю, вы слишком усложняете это.
Нет смысла создавать одноэлементный класс, когда все, что вам нужно, это просто общий объект коллекции, к которому имеют доступ все ваши другие объекты.
Лучший способ предоставить универсальный доступ к какому-либо объекту - это оставить его в делегате приложения. В случае, если вы предложили, у вас будет что-то вроде:
@interface mytAppDelegate : NSObject <UIApplicationDelegate> {
NSMutableArray *recipies;
...
Тогда в любом месте вашего приложения вы можете позвонить:
UIApplicationDelegate *appDelegate=[[UIApplication sharedApplication] delegate];
RecipeObj *aRecipe=[appDelegate.recipes objectAtIndex:someIndexValue];
Без суеты, без суеты.
Если вы используете Базовые данные, вы можете просто оставить объект NSManagedObjectContext
в делегате приложения и получить к нему прямой доступ. Core Data обладает огромной оптимизацией, которая делает его столь же быстрым, как и более примитивные методы, созданные вручную. Я бы не стал пытаться создать отдельный массив, если вы не протестируете и не обнаружите, что прямая Core Data должна замедляться. В случае, если вы дали, этого не будет.