Почему мое приложение не запускается в бета-версии XCode 8 (8S128d)

Это проблема, которая затронет многие приложения, и ее можно найти в бета-версии Xcode 8 (8S128d). Это первая бета-версия, хотя она и не помечена как бета-1.

Проблема связана с NSUserDefaults; это не работает. Вот код, возможно, поместите его в application:didFinishLaunchingWithOptions:.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"hello world" forKey:@"TEST"];

[defaults synchronize];

NSString * oops = [[NSUserDefaults standardUserDefaults] valueForKey:@"TEST"];
NSLog(@"default = %@", oops);

В XCode 7 и более ранних версиях этот код работает так, как ожидалось: значением oops является «hello world».

В XCode 8 значение oops равно nil.

Это очень важно!


person Richard    schedule 15.06.2016    source источник
comment
Вы отправили это как ошибку в Apple? Авторизовались на форумах разработчиков?   -  person drekka    schedule 15.06.2016
comment
Форумы разработчиков не работали, и в любом случае большинство людей сначала ищут в stackoverflow. Но похоже, что это задокументированная проблема, хотя и с довольно уродливым обходным путем. Я опубликую ответ.   -  person Richard    schedule 15.06.2016


Ответы (1)


Нашел ответ: https://forums.developer.apple.com/message/143155#143155

Если вы использовали XCode 7 или более раннюю версию, вам необходимо перезагрузить Mac перед запуском симулятора iOS 10.

Из примечаний к выпуску:

Семя WWDC: запуск нескольких симуляторов iOS может привести к тому, что NSUserDefaults не будет работать

Запуск симулятора iOS 8 или 9, а затем симулятора iOS 10 приведет к тому, что NSUserDefaults перестанет работать в симуляторе. Это можно обойти, перезагрузив главный Mac.

person Richard    schedule 15.06.2016
comment
Интересно, что я НЕ могу найти это примечание в опубликованных примечаниях к выпуску iOS 10 или XCode 8, где я впервые искал эту проблему. Однако перезагрузка решает эту проблему. - person Richard; 15.06.2016
comment
Это отмечено как исправленное в XCode 8 beta 2, но я еще не пробовал. - person Richard; 08.07.2016