我在我的应用程序中使用Three20 TTMessageController
。我已经弄清楚如何使用它,添加了一堆其他东西(包括TTMessageControllerDelegate
方法和ABPeoplePickerNavigationControllerDelegate
方法)。经过一番努力弄清楚后,它对我很有用。
我现在遇到的麻烦是一个设计问题:我想在两个不同的地方以相同的方式使用它,包括使用相同的委托方法。我目前的方法是将所有代码放入一个继承自的类中NSObject
,称为ComposerProxy
,我只是让使用它的两个控制器使用代理,如下所示:
ComposerProxy *proxy = [[ComposerProxy alloc] initWithController:this];
[proxy go];
该go
方法构造TTMessageController
,配置它,将其添加到 a UINavigationController
,并呈现它:
[self.controller presentModalViewController: navController animated: YES];
这很好用,因为我已经很好地封装了我的所有代码ComposerProxy
,我只需要上面两行我想使用它的任何地方。
但是,不利的一面是我不能dealloc
在proxy
不崩溃的情况下使用变量。我也做不到autorelease
:同样的问题。
所以我想知道我的代理方法是否很糟糕。通常如何在不需要在使用它的类中大量重复代码的情况下封装一堆这样的行为?我是否需要向我添加一个委托类ComposerProxy
并让控制器负责以假设composerDidFinish
方法或类似方法关闭模态视图控制器?
许多TIA!