Objective-C中的内存管理是采用引用计数实现的,所谓引用计数(ARC,Automatic Reference Counting)是指内存管理中对引用采取自动计数的技术,当需要强引用对象时对象计数+1,不强引用时对象计数-1,当对象的引用数为0时即销毁。
内存管理的思考方式
Objective-C中内存管理遵循以下原则
- 自己生成的对象,自己持有。
- 非自己生成的对象,自己也能持有。
- 不再需要自己持有的对象时释放。
- 非自己持有的对象无法释放。
进度条(ProgressBar)估计在每个App中都会使用到,再加上最近学习完了CoreAnimation框架,故而想自己实现一款进度条玩玩。
进度条其实就是绘制一条线的过程,重点就是怎么让绘制线的过程“动”起来,要想“动”就需要用到CoreAnimation框架了,用CoreAnimation实现动画的过程主要分3步:
RunLoop是一个与线程相关的非常基础的功能,正如名字所说的那样它是一个事件处理循环,用于调度和和协调接收到的事件,RunLoop的目的就是让线程在有任务的时候busy,在没任务的时候sleep。
RunLoop的管理不是全部自动的,你必需在适当的时机让你的线程启动RunLoop以及响应事件。Cocoa和Cocoa Foundation提供了RunLoop对象用来管理线程的RunLoop,你的应用不必显示地创建RunLoop对象,每个线程包括主线程都有一个关联的RunLoop对象,只有副线程需要显示地运行RunLoop(主线程的创建运行都是app框架自动完成的)。下面主要从RunLoop的构成、创建、运行、模式、事件执行顺序、添加事件源、停止方面来讲解。
NSOperation是iOS开发中实现多线程的一种简便方式,它与GCD类似也是不需要开发者手动管理线程,只需要关注要实现的task即可。NSOperation属于CocoTouch框架,是面向对象的,它的底层是通过GCD实现的。
Grand Central Dispatch(GCD)是iOS特有的多线程技术之一。GCD帮开发者在系统级别中完成了线程的创建和管理,开发者只需要定义想执行的任务已Block的形式追加到适当的Dispatch Queue中即可,GCD会自动为你生成所必需的线程然后执行指定的任务,按我的理解GCD其实就是线程池,完成线程管理工作。下面主要通过GCD的API和GCD的特点两方面进行介绍。
Block是iOS4引入的功能,灵活运用Block可使代码简洁易读,本文通过Block是什么、Block和函数的区别以及__block的意义等方面展开讲解。
注:本文搬移自我自己的博客园http://www.cnblogs.com/NerdFooProgrammer/p/4870260.html
当希望在一个应用程序中某个类的对象只能存在一个的时候就可以考虑用单例模式来实现,单例模式在C++中比较容易实现(只需把构造函数声明为private),而在Objective-C中对象可以通过NSObject的alloc来产生,所以需要编写一些额外的代码来确保对象的唯一性,考虑到现在编写iOS APP代码几乎都是ARC方式,且GCD也已经被用烂了,故本文给出一种利用GCD技术来实现严格单例模式的ARC版本。
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.