内存管理机制
引用计数:因为OC中不存在垃圾回收机制,所以才根据引用计数回收机制。当引用计数为0时,销毁空间。也就是说,根据引用计数来确定一个对象是否释放。
可以改变引用计数的操作:allco retain release copy dealloc
便利构造器
自动释放池:
每次对象调用autorelease 方法时(obj-c中的正式说法应该是:给对象发送autorelease消息),对象的引用计数并不是真正变化,而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain 或者 release 消息时,池中的所有对象的这种要求一一被执行(即:pool被销毁前,会通知池中的所有对象,全部发送release 消息真正将引用计数减少,如果对象之前没有发送过autorelease 消息)
retain:引用计数+1 操作,获取对象的所有权,与release 对应。
线程:注意当视图退出时,需要关闭自己所开线程
alloc : 开辟空间,引用计数有0变为1,dealloc :销毁空间 手动调用dealloc 时候会强制将引用计数置为0;
copy:将源数据重新复制一份,原数据引用计数不变,拷贝的一份引用计数+1;复制一个对象,并且存储在不同的内存区,原对象的引用计数不变。遵循NSCoping 协议的可以深拷贝。
assign :整形或者其他常量的引用计数。不发生改变
在ARC模式下,strong 与retain相似,strong,用于ARC模式下,表明对象属于强引用,类似retain ,但是比retain更加安全,只要对象存在拥有者,就可以引用,不会被释放,只要对象失去拥有者,立即被抛弃,不必再将已经指向已经释放的对象的指针指向空。避免了野指针。
weak 类似assign ,弱引用,引用计数不会增加。释放指针自动置为nil
在ARC模式下,weak 与 assign 相似,
readwrite:读写,既有setter 和 getter
readonly:只有读操作,即只有getter
nonatomic :非原子特性,不保证多线程下保护安全
atomic:原子特性,保证多线程下安全,有一个属性需要对个线程同时访问一个变量,使用atomic 能够自动枷锁解锁。