Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 为处理服务器请求选择正确的设计模式_Design Patterns - Fatal编程技术网

Design patterns 为处理服务器请求选择正确的设计模式

Design patterns 为处理服务器请求选择正确的设计模式,design-patterns,Design Patterns,我正在创建一个iPhone应用程序,它与我的Web服务器进行大量通信。通信是使用JSON完成的。现在我想知道处理这个问题的最好方法是什么。我目前正在开始我的第三次尝试,以尽我所能获得这段代码,但我仍然不能完全确定 在我的第一次尝试中,我尝试使用普通委托属性设置一个普通类(用于在请求完成后告诉类回调应该转到哪里)。这种方法有点失败,因为实例化类、设置委托(负责回调的对象)、调用方法然后再次清理它时遇到了麻烦。有时需要链接类的方法,以获取应用程序中某些页面所需的所有数据,重新实例化类会导致大量内存问

我正在创建一个iPhone应用程序,它与我的Web服务器进行大量通信。通信是使用JSON完成的。现在我想知道处理这个问题的最好方法是什么。我目前正在开始我的第三次尝试,以尽我所能获得这段代码,但我仍然不能完全确定

在我的第一次尝试中,我尝试使用普通委托属性设置一个普通类(用于在请求完成后告诉类回调应该转到哪里)。这种方法有点失败,因为实例化类、设置委托(负责回调的对象)、调用方法然后再次清理它时遇到了麻烦。有时需要链接类的方法,以获取应用程序中某些页面所需的所有数据,重新实例化类会导致大量内存问题,并在链接事件中重新使用对象(服务),使我向所有回调方法提供对当前对象的引用。。。让我说,这并不理想

我的第二次尝试是将类设置为单例,其中我为每个方法指定了哪个委托应该接收回调调用。这导致了一些糟糕的代码更改(比如将委托对象存储在某个地方,一旦请求完成,就可以检索到委托对象)。使用Singleton时,链接方法要容易得多,但不知怎的,我觉得我完全滥用了它

这个类大约有25到35个方法,它们可以有两种结果:要么有效,要么失败(带有特定的错误代码和消息)。所以我们讨论的是需要调用的25-35*2回调方法


因此,我没有要求提供任何代码示例,但我想知道人们是否可以给我一些关于如何解决此问题的新见解。

我不知道这是否有帮助,但我想我不久前回答了一个类似的问题。看看

我不知道它是否完美,但也许我可以告诉你我是如何与Twitter沟通的。基本上有几个类可以完成所有这些,但我会总结一下,就好像只有一个类一样

基本上,该类被实例化,并立即调用autorelease。它得到一个分配的委托并发出请求。对于每个POST参数或GET查询参数,整个过程需要3行代码加上一行代码。使用OAuth进行身份验证也需要一行代码(
[请求集验证器:[MyNameOAuthAuthenticator Authenticator Authenticator WithCredentials:…]

调用
-[req execute]
时,它调用
[self retain]
以补偿自动释放。当请求本身完成(或出错)时,将使用JSON对象通知代理,并调用
[self release]
。这将解决所有内存问题

我的代码目前只需要至少一行(!)即可执行:
[[[[MyRequest alloc]initWithHTTPMethod:httpMethodGET和url:[NSURL URLWithString:…]]autorelease]execute]


也许这会有帮助:)

效果很好。但是,当其中一个方法向委托方法发送数组或字典时,我如何正确地管理它?将对象传递给委托方法后只保留它?可能有点晚了,但是:是的,您只需保留它(我个人只使用
[self-setLastData:obj];
,其中lastData是
@property(非原子,保留)NSDictionary*lastData;
)。