2010-07-14 68 views
0

我在具有UIPickerView的視圖中。這是我製作sortedArray的地方。陣列消失

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    NSMutableArray *studentNames = [[NSMutableArray alloc] init]; 

    for (Student *student in course.students) 
     [studentNames addObject:student.name]; 

    sortedArray = [studentNames sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

    [picker selectRow:(kRowMultiplier*sortedArray.count)/2 inComponent:0 animated:NO]; 
} 

我可以做這兩種方法的NSLog([sortedArray componentsJoinedByString:@", "]);,它工作

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 

但是當我做同樣的痕跡在這個方法中它沒有按't work(It crash):

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 

我不明白爲什麼sortedArray無處不在,但在這一個方法。

+0

哪裏定義數組排序? – 2010-07-14 21:42:27

+0

sortedArray在標題中定義。 – tazboy 2010-07-14 22:32:09

+0

你試過 [self setSortedArray:[studentNames sortedArrayUsingSelector:@selector(caseInsensitiveCompare :)]]; – 2010-07-15 01:13:46

回答

0

sortedArrayUsingSelector:文件:

新的數組包含接收器的元素,而不是它們的副本的引用。

也許原始字符串已經發布?

BTW,我看你不鬆開studentNames - 內存泄漏......

+0

我不確定我在哪裏搞砸了,但因爲你是唯一給出答案的人,我會給你信用。因爲你注意到我的泄漏。謝謝。 – tazboy 2011-05-15 22:44:08