2011-02-07 35 views
1

我有一个UITableViewNSArray派生其数据。在与UITableView相同的观点中,有一个UIDatePicker。当UIDatePicker中的日期发生变化时,我需要更新NSArray,它将数据提供给UITableView并重新加载表。UITableView绑定到一个NSArray

问题是,我不知道如何更改NSArray而不会崩溃我的应用程序。我认为tableview绑定到NSArray,如果我尝试释放它,那么这就是导致崩溃的原因。

这里的时候UIDatePicker的日期更改时调用的方法:

- (IBAction)datesChanged { 
    // Update the availableUnits NSArray 
    if (availableUnits != nil) { 
     [availableUnits release], availableUnits = nil; 
    } 
    availableUnits = [self availableUnitsForGivenTime]; 
    [self.tableView reloadData]; 
} 

缺少什么我在这里?

+2

哦,上帝为什么要使用逗号操作符? *不寒而栗* – 2011-02-07 04:33:37

回答

2

使用的NSMutableArray NSArray的insted的每个当您更改日期,那么首先从Array.Declare NSMutable阵列删除旧的日期作为ViewDidLoad.then财产或Alloc它的时间。

- (IBAction)datesChanged { 

    [self.availableUnits removeAllObjects]; 
    self.availableUnits = [[self availableUnitsForGivenTime] retain]; 
    [self.tableView reloadData]; 
} 

和释放的dealloc阵列

1

看来你在发布之后并没有保留availableUnits。试着用

availableUnits = [[self availableUnitsForGivenTime] retain];