iOS 8:REST编程几个注意事项

使用REST服务编写iOS客户端时,需注意如下几个要点:

  • 绝对不要使用同步的网络调用。即使是在后台线程中,同步调用也不会报告进度。另一个原因是,如果想取消后台线程的同步请求,只能结束这个线程,而这同样不是好办法。另外,也不能控制应用中的网络请求数量,而这对于应用的性能来说是非常关键的。
  • 尽量不要直接使用NSThread或者基于GCD的线程进行网络操作(除非工程非常小而且只有少数的API调用)。
  • 使用基于NSOperationQueue的线程。使用NSOperationQueue可以非常好地控制队列长度和并发的网络操作数量。基于GCD的线程在块分派后就无法取消了。

参考文献:

Rob Napier 等著, 美团移动 译. iOS编程实战. 北京, 人民邮电出版社. 161页

时间: 2024-08-10 00:00:07

iOS 8:REST编程几个注意事项的相关文章

IOS开发——多线程编程

1."省电,流畅,优质应用,响应速度快,用户体验好--"也许是众多用户眼中的苹果系统. 2.在众手机商拼CPU主频,拼4核,8核的年代,苹果依然坚持双核,iphone用户体验仍然坚挺. 以上两点IOS是如何优化,在续航,流畅度和响应速度上完胜安卓,答案就是多线程&RunLoop... RunLoop是IOS事件响应与任务处理最核心机制,它贯穿IOS整个系统运作. RunLoop不像一般的线程循环等待任务,传统的线程循环等待任务会导致CPU时间被占用,虽然你设置了睡眠时间,但很多

iOS定位服务编程详解

现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 iOS 不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位.iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案.这个方案是这样的,如果能够接收GPS信息,那么设备优先采用 GP

ios开发 网络编程浅析(一)

iphone包含了很多框架和库,从底层的套接字到不同层次的封装,可以方便地给程序添加网络功能. (1)BSD套接字.最底层的套接字,这是Unix网络开发常用的API.如果从其他系统移植程序,而程序用的是BSD套接字,那么网络部分可以继续使用这些API. (2)CFNetwork framework .CFNetwork 也是比较底层的, 是对BSD套接字的一个扩展 .它是一个C语言的库,它是基于BSD套接字,提供了对网络协议的抽象.这些抽象使得用户更容易地操作套接字.处理网络的各种连接..它集成

iOS之UI编程--霓虹灯的实现

学习UI编程已经有三四天了,这几天学习了一些初级的视图和控件,比如UIView,UIlabel以及UIButton.,学习UI编程,有一点乐趣就是自己写的代码可以看到效果了.这一点和C语言以及OC区别很大.于是我就尝试做了一个简单视图颜色变换的应用,也就是霓虹灯.实现的功能可以由里而外,也可以由外到里,还可以暂停.由于水平有限,再加上还没有学习NSTimer,只是从网上了解到了简单地应用,所以代码实现上可能会有些问题,算法不是最优的,还望大神们批评指点.贴上一张截图: 下面附上代码实现: #im

iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理

本章内容 ●    iOS应用中的网络错误源 ●    检测网络的可达性 ●    错误处理的经验法则 ●    处理网络错误的设计模式 到目前为止,我们所介绍的iPhone与其他系统的网络交互都是基于一切正常这个假设.本章将会放弃这个假设,并深入探究网络的真实世界.在真实世界中,事情是会出错的,有时可能是非常严重的错误:手机进入与离开网络.包丢掉或是延迟:网络基础设施出错:偶尔用户还会出错.如果一切正常,那么编写iOS应用就会简单不少,不过遗憾的是现实并非如此.本章将会探讨导致网络操作失败的几

(转)iOS 各种网络编程总结--进程、线程、Socket、HTTP、TCP/IP、TCP和UDP

######################################################### 进程与线程 进程和线程都是由操作系统分配和调度的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性. 进程是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更

IOS开发——网络编程总汇

关于IOS的网络编程,大家都会想到C实现的底层BSD ,CFNetwork和NSURL之类的库,虽然如今非常多第三方库非常方便,可是作为一名开发人员,也须要了解底层代码. 以下的思维导图是关于眼下开发中用到的各种协议通讯实现.数据交互格式写成,包含比較底层的CF库实现等,也含有第三方库的介绍. 关于demo.因为服务端是java写的,大家能够网上找代码就醒了,clientdemo仍然能够找我要

iOS -NSOperation并发编程

http://www.cocoachina.com/game/20151201/14517.html 本文是投稿文章,作者:RyanJIN(简书)对于iOS的并发编程, 用的最普遍的就是GCD了, GCD结合Block可以so easy的实现多线程并发编程. 但如果你看一些诸如AFNetworking, SDWebImage的源码, 你会发现它们使用的都是NSOperation, 纳尼? 难道NSOperation这货更屌? YES, 它确实更屌! Okay, 那我们就先来简单PK下GCD和NS

iOS中多线程编程

转载此文作为笔记: iOS中多线程编程工具主要有: NSThread NSOperation GCD 这三种方法都简单易用,各有千秋.但无疑GCD是最有诱惑力的,因为其本身是apple为多核的并行运算提出的解决方案.虽然当前移动平台用双核的不多,但不影响GCD作为多线程编程的利器(ipad2已经是双核了,这无疑是一个趋势). http://www.cnblogs.com/scorpiozj/archive/2011/07/25/2116459.html GCD是和block紧密相连的,所以最好先

iOS开发 socket编程

二.AsyncSocket介绍 1)iOS中Socket编程的方式有哪些? -BSD Socket BSD Socket 是UNIX系统中通用的网络接口,它不仅支持各种不同的网络类型,而且也是一种内部进程之间的通信机制.而iOS系统其实本质就是UNIX,所以可以用,但是比较复杂. -CFSocket CFSocket是苹果提供给我们的使用Socket的方式,但是用起来还是会不太顺手.当然想使用的话,可以细细研究一下. -AsyncSocket 这次博客的主讲内容,也是我们在开发项目中经常会用到的