2009-08-19 28 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