iOS 基础知识整理(不间断更新)

1.内存管理黄金法则

  如果使用了new、alloc或copy方法获得一个对象,则必须释放(release)或自动释放(autorelease)该对象

2.内存释放池

  加上autorelease,就是在内存释放池中登记了,这个对象要释放,不过得等会,等到内存释放池执行drain或者release方法了,那么池中登记的对象也全部释放

  内存释放池 :内存释放池就是NSAutoreleasePool。这个池(pool)类似数据结构中的堆栈(Stack),相当于一个容器,每次对象调用autorelease方法时(obj-c中的正式说法应该是:对象发送autorelease消息),对象的引用计数并不真正变化,而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain或release消息时,池中的所有对象的这种要求一一被执行(即:pool被销毁前,会通知池中的所有对象,全部发送release消息真正将引用计数减少,如果对象之前有发送过autorelease消息)

3.原子atomic 和 非原子nonatomic的区别 

  atomic:线程安全,需要消耗大量资源         nonatomic:非线程安全,适合内存小得移动设备

 

你可能感兴趣的:(iOS 基础知识整理(不间断更新))