Я использую Три20 TTMessageController
в моем приложении. Я понял, как его использовать, добавив кучу других вещей (включая TTMessageControllerDelegate
методы и ABPeoplePickerNavigationControllerDelegate
методы). Это прекрасно работает для меня, после небольшой попытки понять это.
Проблема, с которой я столкнулся сейчас, - это проблема разработки: я хочу использовать ее одинаково в двух разных местах, в том числе с одними и теми же методами делегирования. Мой текущий подход заключается в том, что я поместил весь код в один класс, наследуемый от NSObject
, называемый ComposerProxy
, и у меня просто есть два контроллера, использующих его, использующих прокси, например:
ComposerProxy *proxy = [[ComposerProxy alloc] initWithController:this];
[proxy go];
Метод go
создает TTMessageController
, настраивает его, добавляет к UINavigationController
и представляет:
[self.controller presentModalViewController: navController animated: YES];
Это прекрасно работает, так как мой код красиво инкапсулирован в ComposerProxy
, и мне нужны только две вышеупомянутые строки везде, где я хочу его использовать.
Недостатком является то, что я не могу dealloc
переменную proxy
без сбоев. Я тоже не могу autorelease
: та же проблема.
Так что мне интересно, если мой прокси-подход плохой. Как обычно инкапсулировать такие поведения, не требуя большого количества дублирующегося кода в классах, которые его используют? Нужно ли добавить класс делегата к моему ComposerProxy
и назначить контроллер ответственным за отклонение контроллера модального представления гипотетическим composerDidFinish
методом или чем-то подобным?
Много ТИА!