2009-08-19 12 views
2

我有一个应用程序可以进行SOAP调用。为了防止UI被阻塞,我们将每个SOAP调用放入NSOperation的子类中。这很好,但我们有很多不同类型的SOAP调用。因此,如果我们使用3个WSDL,每个WSDL具有10个端口或操作,那么我们会在SOAP中调用30个不同的调用,如果我们使用NSOperation将每个调用放入一个线程中,则最终将有30个NSOperation子类。使用NSOperation进行线程创建过多对象

这可能不是一件坏事,但我们正在尝试创建一个可重用的库,因此每个WSDL都有一个封装调用的对象。这很好,因为我们使用WSDL2ObjC,并封装了所有的逻辑。但是,在这些NSOperations中包含一个很好的api,看起来很奇怪。此外,我们正在执行api中的线程,以便调用者可以使用它看起来合适的方式。

任何建议将是伟大的。

回答

2

如果我正确理解你,你已经有了封装对SOAP服务的调用的对象,你只是想削减NSOperation子类。

你检查到NSInvocationOperation?它是NSOperation的一个子类,让你将消息作为NSOperation调用发送给对象。所以你仍然得到非阻塞操作,但是你不需要NSOperation的多个子类。

+0

我做到了。我希望能够使用该操作会在完成时发送通知。也许我可以将通知添加到API,这是如何检索返回值,但这似乎是一个糟糕的设计。我会再考虑一下,看看这是否会奏效。我会继续努力,看看我能想出什么。谢谢。 – Brian 2009-08-19 15:04:12

+0

NSIvocationOperation的问题在于它只允许你传递一个对象。有没有解决办法,或者我可以做些什么来解决这个问题? – Brian 2009-08-19 15:07:45

+0

围绕着我能想到的一个对象问题的最好方法就是制作另一个可以容纳所有需要传递的东西的对象。 我将不得不考虑获取通知部分。是否所有的WSDL对象都有相同的方法? – criscokid 2009-08-19 15:14:35