课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,无论是android编程还是ios编程都是目前的移动编程的主流趋势,今天我们就一起来了解一下,实现ios编程的高质量代码都有哪些特点。
多用GCD,少用performSelector系列方法
performSelector系列方法的缺点有两个:
performSelector系列方法可能引起内存泄漏:在ARC环境下,编译器并不知道将要调用的选择子是什么,有没有返回值,返回值是什么,所以ARC不能判断返回值是否能释放,因此ARC做了一个比较谨慎的做法:只添加retain,不添加release。因此在有返回值或参数的时候可能导致内存泄漏。
performSelector系列方法的返回值只能是void或OC对象类型。
performSelector系列方法多只能传入两个参数。
掌握GCD及操作队列的使用时机
GCD性能很棒,但在执行后台任务时,GCD并不一定是佳选择。在iOS开发中,还有一种技术叫NSOperationQueue。GCD是基于C语言的API,性能较高。而NSOperationQueue是基于GCD的抽象。
使用NSOperation和NSOperationQueue的优点:
支持取消某个NSOperation:
在运行任务前,可以在NSOperation对象上调用cancel方法,用以表明此任务不需要执行。不过已经启动的任务无法取消。iOS 8之前,GCD队列是无法取消的,GCD是“安排好之后就不管了(fire and forget)”。iOS 8之后,支持dispatch_cancel和dispatch_block_cancel;
NSOperation支持多任务操作的依赖关系:
比如:任务A、B、C必须在任务D完成后执行。
支持通过KVO监控NSOperation对象的属性:
例如:可以通过isCancelled属性来判断任务是否已取消,通过isFinished属性来判断任务是否已经完成等等;
支持指定NSOperationQueue的优先级:
操作的优先级表示此操作与队列中其他操作之间的优先关系,优先级高的NSOperationQueue先执行,优先级低的后执行。GCD的队列也有优先级,不过不是针对整个队列的;
重用NSOperation对象:
在开发中你可以使用NSOperation的子类或者自己创建NSOperation对象来保存一些信息,可以在类中定义方法,使得代码能够多次使用;
通过Dispatch Group机制,根据系统资源状况来执行任务
dispatch group是GCD的一项特性,能够把任务进行分组管理,然后等待这组任务执行完毕时会有通知,开发者可以拿到结果然后继续下一步操作。
另外,通过dispatch group在并发队列上同时执行多项任务的时候,GCD会根据系统资源状态来帮忙调度这些并发执行的任务。
作者: MrLiuQ
节选:简书
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。