【发布时间】:2011-04-14 05:11:04
【问题描述】:
我刚才注意到,当我在 dealloc 方法中保存对象状态(@public floats 转换为 NSStrings)时,使用
+(void)savePreferences:(NSString*)key :(NSString*)value{
NSMutableString* mutableString=[[NSMutableString alloc]initWithString:value];
CFPreferencesSetAppValue((CFStringRef)key, mutableString, kCFPreferencesCurrentApplication); // Set up the preference.
CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);// Write out the preference data.
[mutableString release];
}
保存了错误的值!?如果我在发布之前保存值,则会保存正确的值。请注意,我很小心地在 end 处调用[super dealloc];。这是为什么呢?
【问题讨论】:
-
您确定
-dealloc被调用,因此+savePreferences::也被调用? -
您不只是使用
NSUserDefaults的任何特殊原因? (因为您发布的代码似乎没有做任何NSUserDefaults无法做到的事情(前提是您不假设总是会调用-dealloc)。
标签: iphone objective-c release dealloc