我在使用viewWillAppear:(BOOL)动画方法时得到一个EXC_BAD_ACCESS

时间:2010-11-29 00:38:34

标签: iphone iphone-sdk-3.0 ios4

所以当我的视图出现时,我正从.plist访问一些数据(设置)。当我使用viewDidAppear:(BOOL)animated方法访问该数据时,一切正常,花花公子。但是当我使用viewWillAppear:(BOOL)animated方法访问数据来访问我的数据时,一切都停止了,我收到了EXC_BAD_ACCESS错误。

有人可以帮我解决这个问题吗?

- (void)viewDidAppear:(BOOL)animated {

    NSLog(@"View Will Appear method");

    NSString *filePath = [self settingsFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {

        NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];

        if ([[array objectAtIndex:0] intValue] == 0) {
            UIImage *imageLow = [UIImage imageNamed:@"image1.png"];
            [object1 setImage:imageLow];
            [imageLow release];
            unitRatio = 1.8;
        }
        else if ([[array objectAtIndex:0] intValue] == 1) {
            UIImage *imageHigh = [UIImage imageNamed:@"image2.png"];
            [object1 setImage:imageHigh];
            [imageHigh release];
            unitRatio = 0.9;
        }

        [array release];

    }
    else {
        UIImage *imageLow = [UIImage imageNamed:@"image1.png"];
        [object1 setImage:imageLow];
        [imageLow release];
        unitRatio = 1.8;
    }

}

2 个答案:

答案 0 :(得分:4)

[imageLow release][imageHigh release]调用是不必要的,会导致崩溃。 imageNamed:返回的对象是预先自动释放的,因此您无需自行释放它们。

答案 1 :(得分:2)

此外,您必须在viewWillAppear方法中调用super:

[super viewWillAppear:animated]

这不是导致崩溃的原因,但是文档说它是必需的。