我为我的用户创建了一个选择器,可以从国家/地区列表中选择。问题是重复打开和关闭选取器会导致“EXC_BAD_ACCESS”错误。我怀疑它可能是内存泄漏,但我不确定。我希望有人可以了解为什么会发生这种情况?
//data source for UIPicker
NSArray *arrayCountryChoices;
arrayCountryChoices = [[NSArray alloc] initWithObjects:@"TK=TOKELAU",
@"TJ=TAJIKISTAN",
@"TH=THAILAND",
@"TG=TOGO",
@"TF=FRENCH SOUTHERN TERRITORIES",
@"GY=GUYANA",
@"TD=CHAD", nil];
//opening the picker
CountryViewController *countryVC = [[CountryViewController alloc] initWithNibName:@"CountryView" bundle:nil];
countryVC.delegate = self;
[self presentModalViewController:countryVC animated:YES];
[countryVC release];
//here is where I grab the data
//close country selector
[self dismissModalViewControllerAnimated:YES];
//parse out code
NSString *strCode = [chosenCountry substringToIndex:2];
//set the gui
txtCountry.text = strCode;
我认为可能是因为我试图在委托有机会获取其数据之前发布国家选择器?如果我不释放选择器,直到调用它的屏幕被释放,我也很喜欢。
提前致谢。
答案 0 :(得分:0)
在将视图添加为模态视图后释放视图不是问题,因为它保存在viewController的modalViewController属性中。但是,当你关闭模态视图时,它确实会消失,所以这条消息:
NSString *strCode = [chosenCountry substringToIndex:2];
...没有目标/接收者。您应该在解除modalView之前将此行移动到该行,以便在发送消息时chosenCountry
对象仍处于活动状态。