0
나는 약 40 문자열을 각각 포함하는 세 개의 배열을 포함하는 plist 파일을 사용하는 종속 선택 도구를 통해 사용자 입력을 기반으로 이미지 (차트)를 선택하는보기 작업 중입니다.메모리 누수가 발생 했습니까? (아이폰 응용 프로그램)
앱을 실행할 때의 약 50 %는 즉시 종료되지만 실행되는 다른 시간에는 피커를 스크롤하면서 시작하여 약 4 초 후에 충돌합니다. 초. 또한 왼쪽 구성 요소에 배열 이름 중 하나를 표시하지 않습니다.
메모리 누수를 검사하기 위해 애널라이저를 사용하여 앱을 실행 해 보았지만 메모리 누수 모드로 애널라이저를 사용하는 경우 전혀 실행되지 않습니다. 코드는 책에서 거의 벗어나 있습니다.
-(void) viewDidLoad {
[super viewDidLoad];
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"US High Index.jpg"]];
self.imageView = tempImageView;
NSString *string = @"US High Index";
self.chartNameLabel.text = string;
[string release];
[tempImageView release];
scrollView.contentSize = CGSizeMake(imageView.frame.size.width , imageView.frame.size.height);
scrollView.maximumZoomScale = 4.0;
scrollView.minimumZoomScale = .05;
scrollView.clipsToBounds = YES;
scrollView.delegate = self;
[scrollView addSubview:imageView];
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"ChartTypes" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary alloc]initWithContentsOfFile:plistPath];
self.chartsDictionary = dictionary;
NSArray *components = [self.chartsDictionary allKeys];
self.chartTypes = components;
NSString *selectedChartType = [self.chartTypes objectAtIndex:0];
NSArray *array = [chartsDictionary objectForKey:selectedChartType];
self.charts = array;
[dictionary release];
[array release];
[selectedChartType release];
[plistPath release];
[bundle release];
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 2;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
if (component == kChartTypeComponent)
return [self.chartTypes count];
return [self.charts count];
}
#pragma mark Picker delegate methods
-(NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
if (component == kChartTypeComponent)
return [self.chartTypes objectAtIndex:row];
return [self.charts objectAtIndex:row];
}
-(void)pickerView:(UIPickerView *)pickerView
didSelectRow: (NSInteger)row
inComponent:(NSInteger)component {
if (component == kChartTypeComponent) {
NSString *selectedChartType = [self.chartTypes objectAtIndex:row];
NSArray *array = [chartsDictionary objectForKey:selectedChartType];
self.charts = array;
[picker selectRow: 0 inComponent:kChartComponent animated: YES];
[picker reloadComponent:kChartComponent];
}
}
thx, 그렇게 된 것 같습니다. – Brodie