Что ж, похоже, никто явно не решил проблему, с которой столкнулся OP.
ОП объявил NSUserDefaults
в файле .h
и просто пытался получить к нему доступ в файле .m
без фактического выделения ресурсов.'pref instance.
Ради начинающего программиста это означает, что в .h
объявляется экземпляр:
NSUserDefaults * pref;
, а в вашем методе .m
, поместите это передпытаясь получить к нему доступ:
pref = [NSUserDefaults standardUserDefaults];
Некоторым это кажется очевидным, но время от времени может вас поймать.В идеале вы должны поместить это где-то как viewDidLoad
, но если вы обращаетесь к методам в этом классе через что-то вроде общего экземпляра, то в методах, которые вы могли бы извлечь выгоду, поместив
if(!pref){
pref = [NSUserDefaults standardUserDefaults];
}
, прежде чем вам нужнополучить доступ к нему, просто чтобы убедиться, что ему выделена память.
Надеюсь, это кому-нибудь поможет!