2011-02-07 69 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];