【发布时间】:2010-04-16 03:05:07
【问题描述】:
我在我的应用程序中使用Three20 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 方法或类似方法中关闭模态视图控制器?
许多 TIA!
【问题讨论】:
标签: iphone objective-c cocoa-touch oop modalviewcontroller