2011-02-07 4 views
1

NSArrayからデータを取得するUITableViewがあります。 UITableViewと同じビューには、UIDatePickerがあります。 UIDatePickerの日付が変更されたら、UITableViewにデータを提供するNSArrayを更新し、テーブルをリロードする必要があります。UITableViewはNSArrayに結び付けられました

私のアプリをクラッシュさせずにNSArrayを変更する方法を知ることができないという問題があります。私は、テーブルビューはNSArrayに結びついていると思うし、もし私がそれを解放しようとすると、クラッシュを引き起こすのです。ここで

UIDatePickerの日付が変更されたときに呼び出されるメソッドです。

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

私はここで何をしないのですか?

+2

の配列を解放する神ああ、なぜあなたはコンマ演算子を使用していますか? * shudder * –

+0

@ジョナサン、そして何が問題なの?私の英雄のMarcus Zarraでもコンマ演算子を使います。最近ご覧ください:http://www.cimgf.com/2010/06/05/re-ordering-nsfetchedresultscontroller/ –

+0

@Neal:権威へのアピール。 2つの論理演算を1つのステートメントにまとめると、読みにくいコードになります。 '[x release]、x = nil'の場合はそれほど悪くはありませんが、行の悪化を促します。参照してください:http://stackoverflow.com/questions/1613230/uses-of-c-comma-operator –

答えて

2
使用NSMutableArrayのはNSArrayのをinsted

、あなたがまず日付を変更ViewDidLoad.thenでプロパティとはalloc、それをようArray.Declare NSMutable配列から古い日付を削除するたびに試してみてください。

- (IBAction)datesChanged { 

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

とのdealloc

1

リリース後にavailableUnitsを保持していないようです。

availableUnits = [[self availableUnitsForGivenTime] retain]; 
関連する問題