为什么我的应用程序不会在XCode 8 beta(8S128d)中运行

Ric*_*ard 3 xcode ios10 xcode8

这是一个会影响许多应用的问题,可以在Xcode 8 beta(8S128d)中找到.这是第一个测试版,虽然它没有标记为beta 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);
Run Code Online (Sandbox Code Playgroud)

在XCode 7和更早版本中,此代码按预期工作:值为oops"hello world".

XCode中8,的值oopsnil.

那是非常重要的!

Ric*_*ard 8

找到答案:https://forums.developer.apple.com/message/143155#143155

如果您使用过XCode 7或更早版本,则需要在运行iOS 10模拟器之前重启Mac.

从发行说明:

WWDC种子:运行多个iOS模拟器可能导致NSUserDefaults无法正常工作

运行iOS 8或9模拟器,然后运行iOS 10模拟器将导致NSUserDefaults停止在模拟器中工作.这可以通过重新启动主机Mac来解决.