Вместо того чтобы создавать много классов, более простым решением является разделение класса на разные категории:
@interface MyViewController : UIViewController {
...
}
...
@end
@interface MyViewController (TableStuff) <UITableViewDataSource, UITableViewDelegate>
// methods related to table stuff
@end
@interface MyViewController (SearchStuff) <UISearchBarDelegate>
// methods related to table stuff
@end
Поскольку категории просто добавляют методы в существующий класс, вы можете использовать любые методы, объявленные в категориив «оригинальном» классе.