我有UITableView
从NSArray
派生数据。在与UITableView
相同的视图中,有一个UIDatePicker
。当UIDatePicker
中的日期发生变化时,我需要将提供数据的NSArray
更新为UITableView
并重新加载表格。
问题是我无法弄清楚如何在不崩溃我的应用程序的情况下更改NSArray
。我认为tableview与NSArray绑定,如果我尝试释放它,那么这就是导致崩溃的原因。
以下是UIDatePicker
更改日期时调用的方法:
- (IBAction)datesChanged {
// Update the availableUnits NSArray
if (availableUnits != nil) {
[availableUnits release], availableUnits = nil;
}
availableUnits = [self availableUnitsForGivenTime];
[self.tableView reloadData];
}
我在这里缺少什么?
答案 0 :(得分:2)
使用NSMutableArray insted NSArray,每次更改日期时,首先从Array.Declare NSMutable数组中删除旧日期作为属性,并在ViewDidLoad.then中分配它。
- (IBAction)datesChanged {
[self.availableUnits removeAllObjects];
self.availableUnits = [[self availableUnitsForGivenTime] retain];
[self.tableView reloadData];
}
以dealloc
发布数组答案 1 :(得分:1)
在发布后,您似乎没有保留availableUnits
。试试
availableUnits = [[self availableUnitsForGivenTime] retain];