1

我的应用程序在启动时崩溃。请给我指路。非常感激。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
NSDictionary *temp = @{@(0): NSStringFromCGPoint(CGPointZero),
                       @(1): NSStringFromCGPoint(CGPointZero),
                       @(2): NSStringFromCGPoint(CGPointZero),
                       @(3): NSStringFromCGPoint(CGPointZero),
                       };

// Pro
NSDictionary *defaults = @{ // ... other PrefKeys 

                           // No crash if I comment out this line
                           GMListVCOffsetsPrefKey:temp,
                           };

[[NSUserDefaults standardUserDefaults] registerDefaults: defaults];
}
4

2 回答 2

4

plist 中的键必须是字符串。这里有数字。

请参阅属性列表文档:“虽然 NSDictionary 和 CFDictionary 对象允许它们的键是任何类型的对象,但如果键不是字符串对象,则集合不是属性列表对象”。

于 2013-03-16T16:57:03.480 回答
2

您正在为导致崩溃的临时数组使用非 NSString 键。下面的代码不会崩溃。

NSDictionary *temp = @{@"0": NSStringFromCGPoint(CGPointZero),
                       @"1": NSStringFromCGPoint(CGPointZero),
                       @"2": NSStringFromCGPoint(CGPointZero),
                       @"3": NSStringFromCGPoint(CGPointZero),
                       };

// Pro
NSDictionary *defaults = @{ // ... other PrefKeys

                           // No crash if I comment out this line
                           GMListVCOffsetsPrefKey:temp,
                           };

[[NSUserDefaults standardUserDefaults] registerDefaults: defaults];
于 2013-03-16T16:57:17.303 回答