2016-06-15 4 views
3

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

Проблема связана с 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 является «привет мир».

В XCode 8 значение oops составляет nil.

Это довольно большой!

+0

Вы опубликовали это как ошибку для Apple? Заходите на форум разработчиков? – drekka

+2

Форумы Dev не работали, и в любом случае большинство людей сначала ищут stackoverflow. Но похоже, что это документированная проблема, хотя и с довольно уродливым обходным решением. Я отправлю ответ. – Richard

ответ

8

Найдено ответ: https://forums.developer.apple.com/message/143155#143155

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

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

WWDC Seed: Запуск несколько IOS имитаторов может привести к NSUserDefaults, чтобы не работать

Запуска IOS 8 или 9 имитатора с последующим ИОС 10 тренажером будет вызывать NSUserDefaults для остановки , работающий в симуляторе. Это можно обойти, перезагрузив хост-компьютер .

+1

Интересно, что я не могу найти это примечание в опубликованных заметках о выпуске для iOS 10 или XCode 8, где я впервые посмотрел на эту проблему. Однако перезагрузка разрешает эту проблему. – Richard

+0

Это отмечено как исправлено в XCode 8 beta 2, но я еще не пробовал. – Richard