在我的viewDidLoad中获取EXC_BAD_ACCESS

时间:2011-07-26 05:45:38

标签: ios nsmutabledictionary

在我的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];
    }
}

2 个答案:

答案 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做了一个属性。在这种情况下,您可以使用产品>配置文件>分配来确定问题。