• iOS之MRC和ARC


    1.栈放局部变量(代码结束就释放,系统自动回收)堆放对象(动态分配)
    2.每个对象里分配4个字节的存储空间放 引用计数器 当引用计数器值为0时对象占用的内存自动被回收自动回收,引用计数器的初始值是1.
    3.retain 引用计数器+1   release引用计数器-1
    4.可以给对象发送(调用)retainCount来接收当前的引用计数器的值
    5.重写dealloc(对象遗言)来判断是否回收对象内存,都要调用
    [super dealloc](写在方法最后)
    6.使用alloc new copy retain计数器为1.只要出现了上面3个,就必须要出现release或者autorelease;
    7.retain返回的是调用它的本身,release没有返回值
    8.野指针:指向僵尸对象(不可用内存)的指针。防止野指针例如:p=nil;
    9.EXC-BAD-ACCESS访问已经被释放的内存(野指针错误)。僵尸对象后再用retain是不行的。(人死不能复生)
    10.僵尸对象:所占有内存已经被回收的对象。
    11.property的retain参数只适用于OC对象类型:release旧值,retain新值。
    12.property中的多线程nonatomic性能高,atomic性能低,一般用nonatomic
    13.property中参数的setter:决定了set方法的名称,一定要加冒号。getter决定了get方法的名称
    14.当一个方法的返回值是bool时用is开头(规范)
    15.在实际开发中不能打开实时对象检测;
    16.在OC中用nil调用方法不会出现异常;
    17.内存泄漏就是不被使用的对象一直在内存中没有被销毁
    18.如果一个程序中出现互引用问题,那么一端对象的@property参数用assign
    19.在互引用问题中开发中引用一个类的规范
    1> 在.h文件中用@class来声明类
    2> 在.m文件中用#import来包含类的所有东西
    20.在dealloc方法中的[super dealloc]要写在最后面;
    21.不管对象是在@autoreleasepool大括号之内还是之外,只要在大括号里面调用对象的autoreleasepool就有作用
    22.只有在自动释放池的作用域中调用对象的autoreleasepool方法才能正常的使用
    23.在ARC机制中不能再去调用release,retain和[super dealloc];
    24.只要没有强指针指向的对象,ARC中立即被自动回收,默认情况所有指针都是强指针;
    25.__weak中是两个弱指针
  • 相关阅读:
    查看Android应用所需权限(uses-permission)
    Android Camera后台拍照
    傅里叶变换
    linux文件系统问题:wrong fs type, bad option, bad superblock
    H3 android 系统编译
    开源股票数据工具
    获取股票实时交易数据的方法
    获取历史和实时股票数据接口
    CRC在线计算工具
    硬盘自动挂载
  • 原文地址:https://www.cnblogs.com/pangbin/p/5601115.html
Copyright © 2020-2023  润新知