oc中的内存管理机制:使用一种叫做引用计数的机制来管理内存中的对象。OC中每个对象都对应着他的引用计数,引用计数可以理解为一个整数计数器,当使用alloc方法创建对象时,引用计数器会自动设置引用计数为1,之后当你向对象发送retain消息时,引用计数+1,当你发送release消息时,引用计数-1,当引用计数为0时,�对象会释放自己所占有的内存。
retain(引用计数器+1)->release(引用计数器-1)
alloc(创建内存空间)->dealloc(释放内存空间)
readwrite 读写 (表示既有setter 也有getter) 默认 readonly 只读 (表示只有getter 没有setter)
assign 基础数据类型 不更改引用计数 copy 拷贝一个相同的对象,但是地址不同,引用计数+1
nonatomic :不考虑线程安全 atomic: 线程操作安全(默认)
strong:在ARC的环境下,作用和MRC环境下的retain一样,引用计数器+1 (默认) weak:在ARC的环境下,作用和MRC环境下的assign一样,weak指向的内存区域被释放掉后,自动nil化,防止野指针泄露
@private:作用范围只能作用在自身类 @protected:作用范围在自身类和继承它的子类(默认) @public:作用范围最大,可以在任何类被访问 @package:这个类,常用于框架类的实例变量,同一包内能用,跨包就不能用
一个程序运行,至少有一个进程,一个进程内,至少有一个线程。
进程: 一个程序的一个运行,在执行过程中拥有独立的内存单元,而多个线程共享这个内存单元。
线程:线程是指进程内的一个内存单元。
联系:线程是进程的基本组成单位。
区别:
好处:
缺点:
实现多线程的方法: NSThread NSOperation GCD NSObject类方法
异步:举个例子就是播放电影,声音和画面是一起同步播放的。 同步:举个例子就是排队买东西,结账的时候必须前一个人付款结束才能轮到你。
实现多线程的同步: NSOperationQueue、NSConditionLock。
iOS7之后使用keyChain(钥匙串)
�Objective-C语言中不支持多继承,但是可以用类目protocol的方法来实现扩展原有类中的方法
堆区的内存需要程序员手动释放 而栈区的内存是系统自动释放的