我在读取和写入plist文件时遇到问题。我可以读取数据,但我不能写它..而且,我认为我有一个与此相关的内存管理问题。这是我的代码:
+(NSString *) getSettingString: (NSString *)key
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"FSSettings.plist"];
NSMutableDictionary* plistDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
NSString *value = [plistDictionary objectForKey:key];
[path release];
return value;
}
+(void) setSettingString: (NSString *)key value:(NSString *)value
{
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"FSSettings.plist"];
NSMutableDictionary* plistDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
[plistDictionary setObject:value forKey:key];
[plistDictionary writeToFile:finalPath atomically:YES];
[path release];
}
答案 0 :(得分:2)
您正在尝试将plist写回应用程序包中,这是不允许的。您需要将文件写入文档目录。有关如何查找此目录的详细信息,请访问:
答案 1 :(得分:1)
如果明确取得资源的所有权,或者调用copy,init,retain方法,则只需释放资源。建设与发展在Xcode中进行分析可以帮助发现这些潜在的内存问题,但足以说,松开对[path release]的调用你不拥有它,因此你不应该发布它。
答案 2 :(得分:0)
bundle是只读的,你应该把文件写在文件目录中。