在dealloc中保存对象状态无效

| 我刚才注意到,当我在dealloc方法中保存对象状态(ѭ0转换为
NSString
)时,使用
+(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];
}
错误的值被保存!如果我只是在发布前保存这些值,则会保存正确的值。请注意,我在结尾处小心地叫ѭ3。为什么是这样?     
已邀请:
该代码有几个问题; 在-dealloc中保存状态为时已晚。在调用-dealloc时,对象图处于被拆除的状态。 在应用终止时,系统不会浪费时间来破坏您的应用。它只会通知它即将终止,然后终止它。如果您依靠-dealloc进行调用,则可能永远不会发生。 该方法名称不是很好。试试like4ѭ。但是,可能会被多次调用的隐含含义将导致严重的效率低下(因为它会一遍又一遍地写出偏好plist)。 输入值的可变字符串副本浪费了周期和内存;不需要它 除非您需要CFPreferences *()的扩展功能,否则应该坚持使用NSUserDefaults;它将导致更少的代码和更少的脆弱性。     

要回复问题请先登录注册