所以当我的视图出现时,我正从.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;
}
}
答案 0 :(得分:4)
[imageLow release]
和[imageHigh release]
调用是不必要的,会导致崩溃。 imageNamed:
返回的对象是预先自动释放的,因此您无需自行释放它们。
答案 1 :(得分:2)
此外,您必须在viewWillAppear方法中调用super:
[super viewWillAppear:animated]
这不是导致崩溃的原因,但是文档说它是必需的。