Как я понял, мне не следует сохранять контроллер, который является делегатом или источником данных.Я сделал UIPickerView, созданный в методе доступа к свойствам следующим образом:
-(UIPickerView *)projectPicker {
if (_projectPicker != nil) {
return _projectPicker;
}
//Create Picker View
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 185, 0, 0)];
picker.showsSelectionIndicator = YES;
//Create source and delegate
NSString *titleForRow0 = NSLocalizedString(@"<<Make Selection>>", @"projectPicker nil Label 0");
NSArray *titlesForFirstRows = [[NSArray alloc] initWithObjects:titleForRow0, nil];
ProjectPickerDatasource *pickerSource = [[ProjectPickerDatasource alloc] initWithManagedObjectContext:self.managedObjectContext
selectedProject:self.currentProject
andTitlesForFirstRows:titlesForFirstRows];
[titlesForFirstRows release];
picker.delegate = pickerSource;
picker.dataSource = pickerSource;
self.projectPicker = picker;
[pickerSource release];
[picker release];
return _projectPicker;
}
Это приводит к аварийному завершению отчета о попытке доступа к нераспределенному экземпляру pickerSource.Если я выделяю компонент pickerSource как другое свойство, сохраняя его в этом контроллере, он работает отлично.Я не думал, что это правильная реализация.Не сохраняет ли pickerView свой делегат и источник данных, пока он не будет уничтожен?