Для хранения основных данных вы можете сделать это просто используя NSUserDefaults
//Setting an int
[[NSUserDefaults standardUserDefaults] setInteger:10 forKey:@"PICKER_VALUE"];
//Retreiving an int
int picker_value = [[NSUserDefaults standardUserDefaults] integerForKey:@"PICKER_VALUE"];
Для более совершенного хранения данных Базовые данные - хороший вариант.
Теперь, когда делегаты приложения являются быстрым и грязным способом обмена данными между приложениями, вам следует избегать такого подхода в производственных приложениях (читать все приложения). У Cocoa with Love есть статья об обмене данными верхнего уровня в приложении.
Использование вашего объекта AppDelegate для управления глобальными переменными может
быстро становится страшно по той же причине, что глобальные переменные в целом
считаются страшными: вы можете легко положить слишком много на этот верхний уровень
и это становится большим, неструктурированным беспорядком. Эта проблема
анти-паттерн, часто называемый Big Ball of Mud .