Ich habe den folgenden Code in meinem ApplicationDelegate. Mein Implementierungsziel ist 3.0 und höher, jedoch erhalte ich eine EXC_BAD_ACCESS, wenn ich die App mit dem folgenden Code auf meinem iPhone mit 3.1.3 starte, aber auf dem Simulator, der 4.2 hat, läuft es gut.EXC_BAD_ACCESS mit NSUserdefaults auf iphone
Dieses Problem ist jetzt Gelöst. Der Code unten funktioniert, und es hat eine EXC_BAD_ACCESS aufgrund einer NSURLConnection in meinem Code. Ich werde meinen Code nicht löschen, wenn jemand anderes dieses Problem hat. Danke für Ihre Hilfe.
UPDATE: Plist-Datei:
<dict>
<key>StringsTable</key>
<string>Root</string>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>Check for report on start?</string>
</dict>
<dict>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>Autocheck reports?</string>
<key>Key</key>
<string>FAutoUpdatePrefKey</string>
<key>DefaultValue</key>
<true/>
</dict>
</array>
Applicationdelegate
+ (void)initialize {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *pListPath = [path stringByAppendingPathComponent:@"Settings.bundle/Root.plist"];
NSDictionary *pList = [NSDictionary dictionaryWithContentsOfFile:pListPath];
NSMutableArray *prefsArray = [pList objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *regDictionary = [NSMutableDictionary dictionary];
for (NSDictionary *dict in prefsArray) {
NSString *key = [dict objectForKey:@"Key"];
if(key) {
id value = [dict objectForKey:@"DefaultValue"];
[regDictionary setObject:value forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:regDictionary];
}
Ja, Sie haben Recht! Es hat etwas mit meinem regDictionary zu tun. Aber ich weiß noch nicht was. Danke, dass Sie mich in die richtige Richtung weisen, weil der Fehler weg ist, wenn ich ihn mit Dummy-Werten fülle. – LuckyLuke
Ich habe meine Antwort mit Code von @PCheese aktualisiert, die den Trick tun sollte – theChrisKent
Leider tat es nicht :( – LuckyLuke