Самая большая проблема с одиночными элементами состоит в том, что они делают поблочное тестирование трудным , особенно когда Вы хотите запустить свои тесты параллельно, но независимо.
второе - то, что люди часто полагают, что ленивая инициализация с перепроверяемой блокировкой является хорошим способом реализовать их.
Наконец, если Ваши одиночные элементы не неизменны, тогда они могут легко стать проблемой производительности, когда Вы пытаетесь увеличить масштаб своего приложения для выполнения в нескольких потоках на нескольких процессорах. Синхронизация, с которой спорят, является дорогой в большинстве сред.
Если это всего лишь одна строка, NSUserDefaults, вероятно, самый простой способ.
// write
[[NSUserDefaults standardUserDefaults] setObject:@"abc" forKey:@"MY_PERSISTENT_KEY"];
// read
NSString *abc = [[NSUserDefaults standardUserDefaults] valueForKey:@"MY_PERSISTENT_KEY"];
Вы можете привести свои объекты в соответствие с NSCoding, а затем записать их в файл с помощью NSKeyedArchiver.
NSString* path = [self pathForDataFile];
NSMutableDictionary* rootObject = [NSMutableDictionary dictionary];
[rootObject setValue: someObject forKey: @"SomeObject"];
// Commit data to file
[NSKeyedArchiver archiveRootObject: rootObject toFile: path];