В настоящее время я эта функция, которая INIT это мой по умолчанию пользователя:Struct завернутых в памяти NSValue вопросы
+ (void)initialize
{
// Create a dictionary to hold the default user preference values
NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary];
// Put defaults in the dictionary
[defaultValues setObject:@(YES) forKey:@"pref key 1"];
... (further inits)
MyCStruct struct;
struct.width = struct.height = 0;
struct.frameDuration = struct.frameTimeScale = 0;
NSValue* structDefaultValue = [NSValue value:&struct
withObjCType:@encode(MyCStruct)];
[defaultValues setObject:structDefaultValue
forKey:@"myPrefKey"];
// Register the dictionary of defaults
[[NSUserDefaults standardUserDefaults] registerDefaults: defaultValues];
}
я получаю исключение точку останова Obj-C в «CFRetain» при регистрации по умолчанию. Все было хорошо, прежде чем я использовал NSValue, поэтому я уверен, что это связано с памятью. Я знаю, что структура справедлива только для локального стека функций, поэтому мне интересно, если это проблема? NSValue скопирует значение, на которое указывает указатель?
Должен ли я создать структуру в куче?
Спасибо!
Отлично, спасибо! Думаю, я поеду с версией NSData. – guitarflow