我在我的應用程序中使用Three20TTMessageController
。我已經想出瞭如何使用它,添加了一堆其他東西(包括TTMessageControllerDelegate
方法和ABPeoplePickerNavigationControllerDelegate
方法)。經過一番努力才發現,它對我很好。如何在兩個控制器中使用一個modalViewController?
我現在遇到的麻煩是設計問題:我想在兩個不同的地方使用它,包括使用相同的委託方法。我目前的做法是,我已經把所有的代碼放到一個類從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!
啊,我沒有想過要添加一個類別。這是一個非常好的主意(我已經爲其他東西做了,而不是控制器)。我想這個類別也會添加它實現的代理。 我認爲,內存問題是因爲調用類不會將代理對象保留在實例屬性中,所以如果它釋放它,它將無法正常工作,因爲沒有對它的引用。一直在思考是否有辦法解決這個問題,但是隨着一個類別可能是一個更好的主意。謝謝! – theory 2010-04-16 18:34:21