在我的iOS应用的viewDidLoad
方法中,我有以下代码行:
loadDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1.0", "version number", nil];
并导致EXC_BAD_ACCESS
错误。我不知道为什么。 viewDidLoad
方法中没有其他任何东西使用该对象,除了该行所在的if / else语句的另一侧,因此无法将其释放。我只是不确定问题是什么。如果你想查看我的整个viewDidLoad
方法,请点击这里:
- (void)viewDidLoad
{
[super viewDidLoad];
tapsBackground = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
tapsBackground.delegate = self;
[self.view addGestureRecognizer:tapsBackground];
saveChangesButton.hidden = YES;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
filePath = [documentsDirectory stringByAppendingPathComponent:@"presets.plist"];
if([[NSFileManager defaultManager] fileExistsAtPath:filePath]){
loadDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
}
else{
loadDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1.0", "version number", nil];
[loadDict writeToFile:filePath atomically:YES];
}
}
答案 0 :(得分:6)
问题是您在第二个字符串中遗漏@
,即"version number"
。
loadDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1.0", "version number", nil];
应该是,
loadDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1.0", @"version number", nil];
答案 1 :(得分:0)
我曾经遇到过同样的问题。试试这个,它对我有用:
self.loadDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1.0", "version number", nil];
我假设你已经为loadDict做了一个属性。在这种情况下,您可以使用产品>配置文件>分配来确定问题。