您的位置:首页 > 移动开发 > IOS开发

iOS开发-内存管理

2015-11-08 17:46 253 查看
内存管理
管理计算机中的堆内存  ios应用程序出现Crash闪退  90% 以上的原因是内存问题(内存泄露<->内存溢出,过度释放<->野指针异常)

内存管理的方式
垃圾回收(gc) 只有程序运行时才会产生垃圾回收
MRC  人工引用计数
ARC  自动引用计数  

MRC 和ARC 内存管理机制是:引用计数为零时自动释放(在编译的时候 ,是编译器的工作)

引用计数
当实例对象被初始化后,设置实例对象中的一个整型变量为1;当实例对象的整型变量为0,实例对象自动释放内存 那么,我们称呼整型变量为引用计数

影响引用计数的方法
(类对象方法)+alloc   将实例对象的引用计数赋值1;
-retain  将实例对象的引用计数加1;
-copy   将实例对象拷贝到新的内存,生成新的对象,赋值为1
-release 将实例对象的引用计数减1,只有经过不断的减1之后,引用计数才会为0
-dealloc  继承来自父类的方法  当对象引用计数为0的时候 由对象自动调用
-autorelease  未来的某一时刻引用计数减1  ,将引用计数

通过autoreleasepool控制release 对象的释放 向一个对象发送autorelease消息
这个对象何时释放,取决于autoreleasepool

引用计数的增加比减少少1,当引用计数降为0之后,不应该在使用这块内存空间

凡是使⽤用了alloc、retain或者copy让内存的引⽤用计数增加了,就需
要使⽤用release或者autorelease让内存的引⽤用计数减少。在⼀段代码内,增加和减少的次数要相等。

遍历构造器本身就有引用计数autorelease 一次  (一定是)

]initWithString: 后面常量字符串  是栈区的
@property(nonatomic,assign)NSString * myString;  可以影响内存过早释放

NSArray * arr = [NSArray array]; 遍历构造器

array
  

继承关系不是扩展一个类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: