zoukankan      html  css  js  c++  java
  • 简述OC中内存管理机制

    1.OC的内存管理机制是引用计数, 内存管理原则是谁开辟谁释放, 有retain就要有release.

    2. 分为ARC(自动引用计数)和MRC(非自动引用计数), 在MRC下, 我们需要手动管理内存,需要使用到retain/copy/release/autorelease等方法实现内存管理, ARC下一般不需要程序员手动管理内存, 系统会为程序添加自动释放池以实现内存管理, 当然, 咱们说的一般不需要不能理解为完全不需要考虑内存问题, 比如在解决block循环引用问题的时候, 就需要使用__weak修饰, 需要注意的是ARC和MRC下解决循环引用的方法还不一样,MRC下是__block, ARC下是__weak .

    3.与retain匹配的是release, 因为retain是引用计数+1, 在内存管理中, 要记得内存管理原则: 谁开辟谁释放, 有retain就要有release.  release是引用计数-1. alloc匹配的是dealloc, alloc是开辟内存空间, dealloc是销毁所开辟的内存, 有开辟就要有销毁. 三.readWrite读写特性, 可读可写. readonly只读, 只有getter, 没有setter. assign一般用于基本数据类型和ID类型. copy拷贝, 一般用于 

    4.NSString. 分为深拷贝和浅拷贝, 深拷贝拷贝的是对象, 浅拷贝拷贝的是指针. nonatomic非原子性, 不考虑线程安全, 优点是效率高. atomic原子性, 有点是线程安全, 缺点是效率低. strong强引用, 和MRC下的retain一样. weak弱引用, 类似MRC下的assign. 但是要注意的是strong和weak都是修饰对象类型的属性的, 不能修饰基本数据类型. ARC下仍然使用assign修饰基本数据类型. 

  • 相关阅读:
    ASP.NET编程的十大技巧
    C#学习心得(转)
    POJ 1177 Picture (线段树)
    POJ 3067 Japan (树状数组)
    POJ 2828 Buy Tickets (线段树)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4235 Flowers (线段树)
    POJ 2886 Who Gets the Most Candies? (线段树)
    POJ 2418 Cows (树状数组)
    HDU 4339 Query (线段树)
  • 原文地址:https://www.cnblogs.com/GYCocoa/p/5390387.html
Copyright © 2011-2022 走看看