我认为使用单独的线程来处理通信不是一个好主意。除了复杂之外,它没有必要,因为NSURLConnection/NSURLRequest
它允许您异步处理通信,即没有阻塞。
详细地说,您可以创建一个NSURLRequest执行:
NSURLRequest* yourReq = [NSURLRequest requestWithURL:yourURL];
然后创建一个NSURLConnection:
NSURLConnection* yourConnection = [NSURLConnection connectionWithRequest:yourReq delegate:yourDelegate];
并开始:
[yourConnection start];
数据准备好后,将调用您的委托(connectionDidFinishLoading:
或connection:didFailWithError:
)的方法之一,以便您可以更新 UI。
这一切都没有阻塞。
一个更好的替代 usingNSURLConnection/NSURLRequest
是使用ASIHTTPRequest,它在内存管理方面似乎更具弹性,并且还提供了一个很好的缓存机制。
编辑:如果你担心你的模特是单身,你不能有代表,让我建议你进一步研究这个问题。
您的模型可能是单例,而您的请求的委托可能与模型无关,除了知道如何访问它(这对于单例模型来说非常简单)。
这可以通过使用 的几种机制来实现NSURLConnection
,但是如果使用ASIHTTPRequest
,它会变得非常容易,因为每个机制都ASIHTTRequest
可以有自己的委托。