То, что у тебя есть, выглядит в основном правильно для меня.Я могу подумать о нескольких вещах, которые вы можете попробовать:
1) Попробуйте временно заменить «return [values count]» на «return 5» и заменить «return [values objectAtIndex: index]» на «return @»arbitraryString "".Если в поле со списком появляется «произвольная строка», вы будете знать, что проблема в массиве «значений».
2) Попробуйте инициализировать массив «значений» следующим образом:
values = [NSMutableArray array];
(Это удобный метод, предлагаемый в NSArray.)
Если вы придерживаетесь метода alloc-init, вы должны создать отдельный временный массив таким образом, присвоить ему «значения», а затем освободить его.В противном случае, поскольку вы присваиваете «значения» с помощью «retain», вы сохраняете его дважды.
3) Попробуйте добавить эту строку в конце ваших вызовов c_box:
[c_box reloadData];
И каждый раз, когда вы меняете массив источника данных, вызывайте его снова.
4) Я не понимаю, почему отделение класса источника данных от класса, управляющего списком, должно быть проблемой, но если это все еще не такработая, попробуйте сделать контроллер окна / представления, которому принадлежит выход комбинированного списка, класс, реализующий протокол NSComboBoxDataSource (методы numberOfItemsIn и objectValueFor), и либо поместите «значения» в этот класс контроллера, либо предоставьте этому классу доступ к «значениям».
Надеюсь, это поможет.