iOS应用通常使用MVC作为主要的设计模式。在应用中开发REST客户端时,需要把REST调用分离到单独的类中。把REST调用写到单独的类中,REST的无状态性和可缓存性可以得到更好的实现。此外,这样就实现了一个隔离层,也能够保持对控制器代码的整洁。
通常建议在进行iOS开发时,尽量避免使用第三方代码。尽管这些组件和框架非常值得使用。尽量避免使用那些严重相互依赖的第三方代码。
RESTfulEngine这个类把每一个Web服务调用都包装为单独的类,可以用这个类处理网络调用。数据应该以Model对象的形式从RESTfulEngine传递到视图控制器,而不应该用JSON或者NSDictionary对象。
取消请求
使用RESTfulEngine 方法调用Web服务,服务器返回的信息需要由视图控制器显示。为了确保视图控制器能够跟系统资源和谐相处,用户离开当前视图时,应该由当前视图控制器负责取消已经创建的网络操作。
例如,点击“后退按钮”意味着,即使请求成功返回,也不会响应。如果这时取消请求,就可以让RESTfulEngine的队列中的其他请求得到提前运行的机会,下一个视图的请求就能更快的执行。
为了确保这一点,RESTfulEngine 类中所有的方法都应该把操作对象返回给视图控制器。取消一个正在进行的操作,就可以减少下一个视图提交请求的执行时间。以Fouresquare为例,用户点击进入用户资料之后又点击了Mayorship按钮。在这种情况下,用户资料会提交一个请求用于获取用户资料,但是用户并没有查看用户资料就直接切换到Mayorship视图。
这时候,应该由用户资料视图负责取消它提交的请求。通过释放带宽,取消获取用户资料的请求之后,很自然的就加快获取Mayorship的请求速度