Это приведет к неопределенному поведению и удалению освобождает память, но не инициализирует его нулем.
Если вы хотите сделать его нулевым, выполните:
SingleBlock::~SingleBlock()
{ x = y = 0 ; }
Если я понял Вас правильно, Вы не хотите указывать значения по умолчанию дважды (однажды, поскольку "DefaultValue" вводит Ваш файл Settings.bundle/Root.plist, и однажды в Вашем коде инициализации приложения), таким образом, Вы не должны сохранять их в синхронизации.
, Так как Settings.bundle хранится в самом комплекте приложений, можно просто считать значения по умолчанию, данные там. Я соединил некоторый пример кода, который смотрит на пакет Настроек и читает значения по умолчанию для каждого ключа там. Обратите внимание, что это не выписывает ключи по умолчанию; если они не будут существовать, то необходимо будет считать и зарегистрировать их в каждом запуске (не стесняйтесь изменять это). Я только сделал некоторые поверхностные тесты, поэтому удостоверьтесь, что это работает на Вас во всех случаях.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
NSString *name = [[NSUserDefaults standardUserDefaults] stringForKey:@"name"];
NSLog(@"name before is %@", name);
// Note: this will not work for boolean values as noted by bpapa below.
// If you use booleans, you should use objectForKey above and check for null
if(!name) {
[self registerDefaultsFromSettingsBundle];
name = [[NSUserDefaults standardUserDefaults] stringForKey:@"name"];
}
NSLog(@"name after is %@", name);
}
- (void)registerDefaultsFromSettingsBundle {
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
if(!settingsBundle) {
NSLog(@"Could not find Settings.bundle");
return;
}
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
NSString *key = [prefSpecification objectForKey:@"Key"];
if(key && [[prefSpecification allKeys] containsObject:@"DefaultValue"]) {
[defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
[defaultsToRegister release];
}