我在一个有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
但是当我在这个方法中执行相同的跟踪时,它不起作用(它崩溃):
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
我不明白为什么sortedArray可以在任何地方工作,但是在这一种方法中。
答案 0 :(得分:0)
来自sortedArrayUsingSelector:
的文档:
新数组包含对接收者元素的引用,而不是它们的副本。
也许原来的字符串已经发布了?
顺便说一句,我看到你没有释放studentNames
- 内存泄漏......